chore: fork @llblab/[email protected].0 as @evandrodevbr/oh-my-pi-telegram
Fork of upstream llblab/[email protected].0 (SHA afe09c5) repackaged as a drop-in extension for can1357/oh-my-pi (omp >= 16.5.2). Changes vs upstream: - Rename package: @llblab/pi-telegram -> @evandrodevbr/oh-my-pi-telegram - Bump version: 0.22.0 -> 0.22.0-evandro.1 - Update repository/homepage/bugs URLs to evandrodevbr - Add omp field in package.json (displayName + compatibleWith) - README: prepend 'Oh My Pi (omp) Compatibility' section with install commands, verified-components table, upstream lineage, and rationale - CHANGELOG: add '0.22.0-evandro.1' entry under Unreleased - docs/: rename @llblab/pi-telegram imports to @evandrodevbr/oh-my-pi-telegram - tests/public-api.test.ts: rename package import paths Gates re-run on the fork: - npm run typecheck -> tsc --noEmit (success) - npm test -> 1229 pass / 0 fail / 1 platform-only skip - npm run audit -> found 0 vulnerabilities - npm run pack:check -> evandrodevbr-oh-my-pi-telegram-0.22.0-evandro.1.tgz Verified: - omp install --link ./pi-telegram -> Linked OK - omp plugin list -> @evandrodevbr/[email protected].0-evandro.1 Upstream lineage: badlogic/pi-telegram -> llblab/pi-telegram (0.22.0) -> evandrodevbr/oh-my-pi-telegram (this fork)
This commit is contained in:
commit
d1d04001d0
155 files changed
+107848
No files matched your search
@@ -0,0 +1,112 @@
|
||||
/**
|
||||
* Regression tests for public package API exports
|
||||
* Zones: package boundary, extension interop
|
||||
* Guards stable public subpaths and the removal of deep lib wildcard exports
|
||||
*/
|
||||
|
||||
import assert from "node:assert/strict";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import test from "node:test";
|
||||
|
||||
async function assertPackagePathNotExported(specifier: string): Promise<void> {
|
||||
await assert.rejects(
|
||||
() => import(specifier),
|
||||
(error: unknown) =>
|
||||
error instanceof Error &&
|
||||
"code" in error &&
|
||||
error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED",
|
||||
);
|
||||
}
|
||||
|
||||
test("Public package subpaths expose the stable extension API", async () => {
|
||||
const [
|
||||
root,
|
||||
inbound,
|
||||
outbound,
|
||||
delivery,
|
||||
activity,
|
||||
updates,
|
||||
commands,
|
||||
sections,
|
||||
status,
|
||||
voice,
|
||||
keyboard,
|
||||
] = await Promise.all([
|
||||
import("@evandrodevbr/oh-my-pi-telegram"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/inbound"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/outbound"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/delivery"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/activity"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/updates"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/commands"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/sections"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/status"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/voice"),
|
||||
import("@evandrodevbr/oh-my-pi-telegram/keyboard"),
|
||||
]);
|
||||
|
||||
assert.deepEqual(Object.keys(root), ["default"]);
|
||||
assert.deepEqual(Object.keys(inbound).sort(), [
|
||||
"registerTelegramInboundHandler",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(outbound).sort(), [
|
||||
"recordTelegramRuntimeEvent",
|
||||
"registerTelegramOutboundHandler",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(delivery).sort(), [
|
||||
"deleteTelegramView",
|
||||
"editTelegramView",
|
||||
"sendTelegramChatAction",
|
||||
"sendTelegramView",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(activity).sort(), [
|
||||
"registerTelegramActivityHandler",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(updates).sort(), [
|
||||
"registerTelegramUpdateHandler",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(commands).sort(), ["registerTelegramCommand"]);
|
||||
assert.deepEqual(Object.keys(sections).sort(), [
|
||||
"getTelegramSectionDiagnostics",
|
||||
"registerTelegramSection",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(status).sort(), [
|
||||
"registerTelegramStatusLineProvider",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(voice).sort(), [
|
||||
"TELEGRAM_VOICE_REPLY_MODES",
|
||||
"computeVoicePromptContribution",
|
||||
"computeVoiceTurnFlags",
|
||||
"getTelegramVoiceReplyMode",
|
||||
"getTelegramVoiceSendTranscript",
|
||||
"isVoiceTurn",
|
||||
"registerTelegramVoiceSynthesisProvider",
|
||||
"registerTelegramVoiceTranscriptionProvider",
|
||||
"shouldSuppressPreviewForVoice",
|
||||
]);
|
||||
assert.deepEqual(Object.keys(keyboard), []);
|
||||
});
|
||||
|
||||
test("Activity API declares the Pi lifecycle compatibility floor", async () => {
|
||||
const packageJson = JSON.parse(
|
||||
await readFile(new URL("../package.json", import.meta.url), "utf8"),
|
||||
) as { peerDependencies?: Record<string, string> };
|
||||
assert.equal(
|
||||
packageJson.peerDependencies?.["@earendil-works/pi-coding-agent"],
|
||||
">=0.80.6",
|
||||
);
|
||||
assert.equal(
|
||||
packageJson.peerDependencies?.["@earendil-works/pi-agent-core"],
|
||||
">=0.80.6",
|
||||
);
|
||||
assert.equal(
|
||||
packageJson.peerDependencies?.["@earendil-works/pi-ai"],
|
||||
">=0.80.6",
|
||||
);
|
||||
});
|
||||
|
||||
test("Package-private lib implementation paths are not exported", async () => {
|
||||
await assertPackagePathNotExported("@evandrodevbr/oh-my-pi-telegram/lib/updates.ts");
|
||||
await assertPackagePathNotExported("@evandrodevbr/oh-my-pi-telegram/lib/sections.ts");
|
||||
await assertPackagePathNotExported("@evandrodevbr/oh-my-pi-telegram/api/updates.ts");
|
||||
});
|
||||
Reference in new issue
Block a user