@openclaw/crabline 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -22
- package/assets/crabline-banner.svg +20 -0
- package/dist/src/bin/crabline.js.map +1 -1
- package/dist/src/cli/program.d.ts +25 -1
- package/dist/src/cli/program.js +579 -82
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/config/load.js +59 -6
- package/dist/src/config/load.js.map +1 -1
- package/dist/src/config/schema.d.ts +116 -92
- package/dist/src/config/schema.js +179 -73
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/core/errors.js +9 -2
- package/dist/src/core/errors.js.map +1 -1
- package/dist/src/core/exit-codes.js.map +1 -1
- package/dist/src/core/matcher.js +7 -6
- package/dist/src/core/matcher.js.map +1 -1
- package/dist/src/core/message-template.js.map +1 -1
- package/dist/src/core/nonces.d.ts +1 -0
- package/dist/src/core/nonces.js +4 -2
- package/dist/src/core/nonces.js.map +1 -1
- package/dist/src/core/reporters.d.ts +1 -0
- package/dist/src/core/reporters.js +42 -4
- package/dist/src/core/reporters.js.map +1 -1
- package/dist/src/core/run.d.ts +3 -0
- package/dist/src/core/run.js +415 -107
- package/dist/src/core/run.js.map +1 -1
- package/dist/src/core/safe-regex.d.ts +3 -0
- package/dist/src/core/safe-regex.js +21 -0
- package/dist/src/core/safe-regex.js.map +1 -0
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/openclaw/artifact-generation.d.ts +43 -0
- package/dist/src/openclaw/artifact-generation.js +363 -0
- package/dist/src/openclaw/artifact-generation.js.map +1 -0
- package/dist/src/openclaw/bridges/matrix.js +97 -12
- package/dist/src/openclaw/bridges/matrix.js.map +1 -1
- package/dist/src/openclaw/bridges/mattermost.js +32 -10
- package/dist/src/openclaw/bridges/mattermost.js.map +1 -1
- package/dist/src/openclaw/bridges/signal.js +55 -18
- package/dist/src/openclaw/bridges/signal.js.map +1 -1
- package/dist/src/openclaw/bridges/slack.js +85 -7
- package/dist/src/openclaw/bridges/slack.js.map +1 -1
- package/dist/src/openclaw/bridges/telegram.js +124 -30
- package/dist/src/openclaw/bridges/telegram.js.map +1 -1
- package/dist/src/openclaw/bridges/whatsapp.js +78 -17
- package/dist/src/openclaw/bridges/whatsapp.js.map +1 -1
- package/dist/src/openclaw/bridges/zalo.js +14 -5
- package/dist/src/openclaw/bridges/zalo.js.map +1 -1
- package/dist/src/openclaw/outbound-contract.d.ts +5 -0
- package/dist/src/openclaw/outbound-contract.js +40 -0
- package/dist/src/openclaw/outbound-contract.js.map +1 -0
- package/dist/src/openclaw/private-file.d.ts +28 -0
- package/dist/src/openclaw/private-file.js +465 -0
- package/dist/src/openclaw/private-file.js.map +1 -0
- package/dist/src/openclaw/shared.d.ts +21 -2
- package/dist/src/openclaw/shared.js +115 -18
- package/dist/src/openclaw/shared.js.map +1 -1
- package/dist/src/openclaw/smoke-lock.d.ts +63 -0
- package/dist/src/openclaw/smoke-lock.js +1004 -0
- package/dist/src/openclaw/smoke-lock.js.map +1 -0
- package/dist/src/openclaw.d.ts +16 -8
- package/dist/src/openclaw.js +334 -52
- package/dist/src/openclaw.js.map +1 -1
- package/dist/src/providers/builtin/discord.d.ts +10 -1
- package/dist/src/providers/builtin/discord.js +144 -18
- package/dist/src/providers/builtin/discord.js.map +1 -1
- package/dist/src/providers/builtin/external-webhook-auth.d.ts +11 -0
- package/dist/src/providers/builtin/external-webhook-auth.js +10 -0
- package/dist/src/providers/builtin/external-webhook-auth.js.map +1 -0
- package/dist/src/providers/builtin/feishu.d.ts +19 -2
- package/dist/src/providers/builtin/feishu.js +307 -25
- package/dist/src/providers/builtin/feishu.js.map +1 -1
- package/dist/src/providers/builtin/googlechat.d.ts +20 -1
- package/dist/src/providers/builtin/googlechat.js +178 -19
- package/dist/src/providers/builtin/googlechat.js.map +1 -1
- package/dist/src/providers/builtin/imessage.d.ts +4 -0
- package/dist/src/providers/builtin/imessage.js +26 -11
- package/dist/src/providers/builtin/imessage.js.map +1 -1
- package/dist/src/providers/builtin/loopback.js +92 -30
- package/dist/src/providers/builtin/loopback.js.map +1 -1
- package/dist/src/providers/builtin/matrix.d.ts +11 -1
- package/dist/src/providers/builtin/matrix.js +53 -29
- package/dist/src/providers/builtin/matrix.js.map +1 -1
- package/dist/src/providers/builtin/mattermost.d.ts +10 -0
- package/dist/src/providers/builtin/mattermost.js +38 -15
- package/dist/src/providers/builtin/mattermost.js.map +1 -1
- package/dist/src/providers/builtin/msteams.d.ts +17 -1
- package/dist/src/providers/builtin/msteams.js +113 -14
- package/dist/src/providers/builtin/msteams.js.map +1 -1
- package/dist/src/providers/builtin/native-local-mock.d.ts +2 -9
- package/dist/src/providers/builtin/native-local-mock.js +12 -35
- package/dist/src/providers/builtin/native-local-mock.js.map +1 -1
- package/dist/src/providers/builtin/script.d.ts +11 -15
- package/dist/src/providers/builtin/script.js +566 -104
- package/dist/src/providers/builtin/script.js.map +1 -1
- package/dist/src/providers/builtin/slack.d.ts +6 -0
- package/dist/src/providers/builtin/slack.js +99 -40
- package/dist/src/providers/builtin/slack.js.map +1 -1
- package/dist/src/providers/builtin/telegram.d.ts +6 -0
- package/dist/src/providers/builtin/telegram.js +64 -43
- package/dist/src/providers/builtin/telegram.js.map +1 -1
- package/dist/src/providers/builtin/whatsapp.d.ts +28 -8
- package/dist/src/providers/builtin/whatsapp.js +567 -30
- package/dist/src/providers/builtin/whatsapp.js.map +1 -1
- package/dist/src/providers/builtin/zalo.js +30 -19
- package/dist/src/providers/builtin/zalo.js.map +1 -1
- package/dist/src/providers/catalog.d.ts +3 -3
- package/dist/src/providers/catalog.js +3 -3
- package/dist/src/providers/catalog.js.map +1 -1
- package/dist/src/providers/local-mock.d.ts +11 -2
- package/dist/src/providers/local-mock.js +322 -96
- package/dist/src/providers/local-mock.js.map +1 -1
- package/dist/src/providers/native-ids.d.ts +1 -0
- package/dist/src/providers/native-ids.js +6 -1
- package/dist/src/providers/native-ids.js.map +1 -1
- package/dist/src/providers/recorder.d.ts +30 -2
- package/dist/src/providers/recorder.js +549 -70
- package/dist/src/providers/recorder.js.map +1 -1
- package/dist/src/providers/registry.d.ts +25 -1
- package/dist/src/providers/registry.js +280 -40
- package/dist/src/providers/registry.js.map +1 -1
- package/dist/src/providers/signed-jwt.d.ts +29 -0
- package/dist/src/providers/signed-jwt.js +202 -0
- package/dist/src/providers/signed-jwt.js.map +1 -0
- package/dist/src/providers/slack-ids.js.map +1 -1
- package/dist/src/providers/target-normalizers.d.ts +26 -0
- package/dist/src/providers/target-normalizers.js +276 -0
- package/dist/src/providers/target-normalizers.js.map +1 -0
- package/dist/src/providers/types.d.ts +5 -0
- package/dist/src/providers/types.js.map +1 -1
- package/dist/src/providers/webhook-server.d.ts +2 -0
- package/dist/src/providers/webhook-server.js +72 -25
- package/dist/src/providers/webhook-server.js.map +1 -1
- package/dist/src/servers/http.d.ts +23 -3
- package/dist/src/servers/http.js +213 -20
- package/dist/src/servers/http.js.map +1 -1
- package/dist/src/servers/index.js +20 -21
- package/dist/src/servers/index.js.map +1 -1
- package/dist/src/servers/matrix.js +465 -51
- package/dist/src/servers/matrix.js.map +1 -1
- package/dist/src/servers/mattermost.d.ts +5 -0
- package/dist/src/servers/mattermost.js +306 -58
- package/dist/src/servers/mattermost.js.map +1 -1
- package/dist/src/servers/pending-events.d.ts +2 -0
- package/dist/src/servers/pending-events.js +11 -0
- package/dist/src/servers/pending-events.js.map +1 -0
- package/dist/src/servers/recorder.d.ts +5 -0
- package/dist/src/servers/recorder.js +262 -3
- package/dist/src/servers/recorder.js.map +1 -1
- package/dist/src/servers/signal.d.ts +2 -0
- package/dist/src/servers/signal.js +444 -56
- package/dist/src/servers/signal.js.map +1 -1
- package/dist/src/servers/slack.d.ts +5 -0
- package/dist/src/servers/slack.js +515 -49
- package/dist/src/servers/slack.js.map +1 -1
- package/dist/src/servers/telegram.d.ts +111 -0
- package/dist/src/servers/telegram.js +830 -158
- package/dist/src/servers/telegram.js.map +1 -1
- package/dist/src/servers/webhook-target.d.ts +40 -0
- package/dist/src/servers/webhook-target.js +349 -0
- package/dist/src/servers/webhook-target.js.map +1 -0
- package/dist/src/servers/websocket.d.ts +2 -0
- package/dist/src/servers/websocket.js +29 -0
- package/dist/src/servers/websocket.js.map +1 -0
- package/dist/src/servers/whatsapp-baileys-websocket.d.ts +65 -1
- package/dist/src/servers/whatsapp-baileys-websocket.js +723 -99
- package/dist/src/servers/whatsapp-baileys-websocket.js.map +1 -1
- package/dist/src/servers/whatsapp-jid.d.ts +5 -0
- package/dist/src/servers/whatsapp-jid.js +32 -0
- package/dist/src/servers/whatsapp-jid.js.map +1 -0
- package/dist/src/servers/whatsapp-wire/binary-node.d.ts +5 -0
- package/dist/src/servers/whatsapp-wire/binary-node.js +87 -20
- package/dist/src/servers/whatsapp-wire/binary-node.js.map +1 -1
- package/dist/src/servers/whatsapp-wire/crypto.d.ts +6 -1
- package/dist/src/servers/whatsapp-wire/crypto.js +99 -45
- package/dist/src/servers/whatsapp-wire/crypto.js.map +1 -1
- package/dist/src/servers/whatsapp-wire/handshake.js +39 -4
- package/dist/src/servers/whatsapp-wire/handshake.js.map +1 -1
- package/dist/src/servers/whatsapp-wire/signal.js.map +1 -1
- package/dist/src/servers/whatsapp.d.ts +12 -7
- package/dist/src/servers/whatsapp.js +269 -107
- package/dist/src/servers/whatsapp.js.map +1 -1
- package/dist/src/servers/zalo.d.ts +14 -0
- package/dist/src/servers/zalo.js +521 -88
- package/dist/src/servers/zalo.js.map +1 -1
- package/docs/channel-setup.md +197 -19
- package/fixtures/examples/crabline.example.yaml +10 -0
- package/package.json +20 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, CommanderError } from \"commander\";\nimport { randomUUID } from \"node:crypto\";\nimport { constants as fsConstants } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport nodePath from \"node:path\";\nimport { lock } from \"proper-lockfile\";\nimport { loadManifest } from \"../config/load.js\";\nimport { createRegistry } from \"../providers/registry.js\";\nimport { formatJson, formatRunResultText, sanitizeTerminalText } from \"../core/reporters.js\";\nimport {\n assertScriptStdinPayloadSize,\n computeExitCode,\n runFixtureCommand,\n runSuite,\n} from \"../core/run.js\";\nimport { CrablineError, ensureErrorMessage } from \"../core/errors.js\";\nimport {\n isCrablineServerChannel,\n startCrablineServer,\n type CrablineServerChannel,\n type CrablineServerManifest,\n type StartCrablineServerParams,\n type StartedCrablineServer,\n} from \"../servers/index.js\";\n\ntype GlobalOptions = {\n config?: string;\n json?: boolean;\n};\n\ntype SetExitCode = (code: number) => void;\n\nexport type ReadyFileIdentity = {\n birthtimeNs: bigint;\n ctimeNs: bigint;\n dev: bigint;\n ino: bigint;\n size: bigint;\n};\n\ntype ProgramDependencies = {\n acquireReadyFileLease?: (filePath: string) => Promise<() => Promise<void>>;\n createRegistry?: typeof createRegistry;\n publishReadyFile?: (filePath: string, contents: string) => Promise<ReadyFileIdentity>;\n removeReadyFile?: (\n filePath: string,\n expectedContents: string,\n expectedIdentity: ReadyFileIdentity,\n ) => Promise<void>;\n startServer?: (params: StartCrablineServerParams) => Promise<StartedCrablineServer>;\n};\n\ntype ServeSharedOptions = {\n host: string;\n port: number;\n recorderPath?: string | undefined;\n};\n\ntype ServeCommandOptions = {\n account?: string | undefined;\n accessToken?: string | undefined;\n adminToken?: string | undefined;\n botToken?: string | undefined;\n botUsername?: string | undefined;\n host: string;\n once?: boolean | undefined;\n port: string;\n readyFile?: string | undefined;\n recorder?: string | undefined;\n selfJid?: string | undefined;\n showSecrets?: boolean | undefined;\n signingSecret?: string | undefined;\n};\n\ntype ServeParamFactory = (\n shared: ServeSharedOptions,\n commandOptions: ServeCommandOptions,\n) => StartCrablineServerParams;\n\nconst READY_FILE_LEASE_STALE_MS = 60_000;\nconst READY_FILE_LEASE_UPDATE_MS = 1_000;\n\nconst SERVE_PARAM_FACTORIES = {\n mattermost: (shared, commandOptions) => ({\n ...shared,\n adminToken: commandOptions.adminToken,\n botToken: commandOptions.botToken,\n botUsername: commandOptions.botUsername,\n channel: \"mattermost\",\n }),\n matrix: (shared, commandOptions) => ({\n ...shared,\n accessToken: commandOptions.accessToken,\n adminToken: commandOptions.adminToken,\n channel: \"matrix\",\n }),\n signal: (shared, commandOptions) => ({\n ...shared,\n account: commandOptions.account,\n adminToken: commandOptions.adminToken,\n channel: \"signal\",\n }),\n slack: (shared, commandOptions) => ({\n ...shared,\n adminToken: commandOptions.adminToken,\n botToken: commandOptions.botToken,\n channel: \"slack\",\n signingSecret: commandOptions.signingSecret,\n }),\n telegram: (shared, commandOptions) => ({\n ...shared,\n adminToken: commandOptions.adminToken,\n botToken: commandOptions.botToken,\n botUsername: commandOptions.botUsername,\n channel: \"telegram\",\n }),\n whatsapp: (shared, commandOptions) => ({\n ...shared,\n accessToken: commandOptions.accessToken,\n adminToken: commandOptions.adminToken,\n channel: \"whatsapp\",\n selfJid: commandOptions.selfJid,\n }),\n zalo: (shared, commandOptions) => ({\n ...shared,\n adminToken: commandOptions.adminToken,\n botToken: commandOptions.botToken,\n botName: commandOptions.botUsername,\n channel: \"zalo\",\n }),\n} satisfies Record<CrablineServerChannel, ServeParamFactory>;\n\nfunction isClosedPipeError(error: unknown): boolean {\n const code = (error as NodeJS.ErrnoException).code;\n return code === \"EPIPE\" || code === \"ERR_STREAM_DESTROYED\";\n}\n\nasync function writeOutput(stream: NodeJS.WriteStream, value: string): Promise<boolean> {\n try {\n await new Promise<void>((resolve, reject) => {\n let drained = false;\n let written = false;\n const cleanup = () => {\n stream.off(\"drain\", onDrain);\n stream.off(\"error\", onError);\n };\n const finish = () => {\n if (drained && written) {\n cleanup();\n resolve();\n }\n };\n const onDrain = () => {\n drained = true;\n finish();\n };\n const onError = (error: Error) => {\n cleanup();\n reject(error);\n };\n stream.once(\"error\", onError);\n let hasCapacity: boolean;\n try {\n hasCapacity = stream.write(value, (error) => {\n if (error) {\n stream.once(\"error\", () => undefined);\n onError(error);\n return;\n }\n written = true;\n finish();\n });\n } catch (error) {\n cleanup();\n reject(error);\n return;\n }\n if (hasCapacity) {\n drained = true;\n finish();\n } else {\n stream.once(\"drain\", onDrain);\n }\n });\n return true;\n } catch (error) {\n if (isClosedPipeError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nasync function print(value: string): Promise<boolean> {\n return await writeOutput(process.stdout, `${value}\\n`);\n}\n\nasync function withManifest<T>(\n options: GlobalOptions,\n action: (context: Awaited<ReturnType<typeof loadManifest>>) => Promise<T>,\n): Promise<T> {\n return action(await loadManifest(options.config));\n}\n\nexport function createProgram(\n setExitCode: SetExitCode = (code) => {\n process.exitCode = code;\n },\n dependencies: ProgramDependencies = {},\n): Command {\n const program = new Command();\n const acquireReadyLease = dependencies.acquireReadyFileLease ?? acquireReadyFileLease;\n const registryFactory = dependencies.createRegistry ?? createRegistry;\n const publish = dependencies.publishReadyFile ?? publishReadyFileUnlocked;\n const removeReady = dependencies.removeReadyFile ?? removeReadyFileIfOwned;\n const startServer = dependencies.startServer ?? startCrablineServer;\n\n program\n .exitOverride()\n .name(\"crabline\")\n .description(\"Deterministic CLI harness for messaging provider E2E tests\")\n .option(\"-c, --config <path>\", \"Config file path\")\n .option(\"--json\", \"Machine-readable output\", false)\n .showHelpAfterError();\n\n program\n .command(\"providers\")\n .description(\"List configured providers and provider catalog coverage\")\n .action(async () => {\n const options = program.opts() as GlobalOptions;\n const { manifest, path } = await loadManifest(options.config);\n const registry = registryFactory(manifest, path);\n const payload = {\n configured: Object.entries(manifest.providers).map(([id, config]) => ({\n adapter: config.adapter,\n capabilities: config.capabilities,\n id,\n platform: config.platform,\n status: config.status,\n })),\n support: registry.catalog,\n };\n await print(options.json ? formatJson(payload) : renderProvidersText(payload));\n });\n\n program\n .command(\"fixtures\")\n .description(\"List fixtures\")\n .action(async () => {\n const options = program.opts() as GlobalOptions;\n const { manifest } = await loadManifest(options.config);\n await print(\n options.json\n ? formatJson(manifest.fixtures)\n : manifest.fixtures\n .map(\n (fixture) =>\n `${sanitizeTerminalText(fixture.id, true)} ${sanitizeTerminalText(fixture.mode, true)} provider=${sanitizeTerminalText(fixture.provider, true)} target=${sanitizeTerminalText(fixture.target.id, true)}`,\n )\n .join(\"\\n\"),\n );\n });\n\n program\n .command(\"probe <fixtureId>\")\n .description(\"Probe provider readiness using a fixture\")\n .action(async (fixtureId) => {\n const options = program.opts() as GlobalOptions;\n const { manifest, path } = await loadManifest(options.config);\n const fixture = manifest.fixtures.find((entry) => entry.id === fixtureId);\n if (!fixture) {\n throw new CrablineError(`Unknown fixture: ${fixtureId}`, { kind: \"config\" });\n }\n const registry = registryFactory(manifest, path);\n const result = await runFixtureCommand({\n fixtureId: fixture.id,\n manifest,\n manifestPath: path,\n modeOverride: \"probe\",\n registry,\n });\n await print(options.json ? formatJson(result) : formatRunResultText(result));\n setExitCode(computeExitCode(result));\n });\n\n for (const mode of [\"send\", \"roundtrip\", \"agent\"] as const) {\n program\n .command(`${mode} <fixtureId>`)\n .description(`${mode} a fixture`)\n .action(async (fixtureId) => {\n const options = program.opts() as GlobalOptions;\n const { manifest, path } = await loadManifest(options.config);\n const registry = registryFactory(manifest, path);\n const result = await runFixtureCommand({\n fixtureId,\n manifest,\n manifestPath: path,\n modeOverride: mode,\n registry,\n });\n await print(options.json ? formatJson(result) : formatRunResultText(result));\n setExitCode(computeExitCode(result));\n });\n }\n\n program\n .command(\"run <fixtureIds...>\")\n .description(\"Run one or more fixtures as a suite\")\n .action(async (fixtureIds) => {\n const options = program.opts() as GlobalOptions;\n const { manifest, path } = await loadManifest(options.config);\n const registry = registryFactory(manifest, path);\n const result = await runSuite({\n fixtureIds,\n manifest,\n manifestPath: path,\n registry,\n });\n await print(options.json ? formatJson(result) : formatRunResultText(result));\n setExitCode(computeExitCode(result));\n });\n\n program\n .command(\"watch <fixtureId>\")\n .alias(\"webhook\")\n .description(\"Watch inbound messages for one fixture using provider webhook/recorder mode\")\n .action(async (fixtureId) => {\n const options = program.opts() as GlobalOptions;\n await withManifest(options, async ({ manifest, path }) => {\n const fixture = manifest.fixtures.find((entry) => entry.id === fixtureId);\n if (!fixture) {\n throw new CrablineError(`Unknown fixture: ${fixtureId}`, { kind: \"config\" });\n }\n\n const provider = registryFactory(manifest, path).resolve(fixture.provider, fixture.id);\n if (!provider.watch) {\n throw new CrablineError(`Provider \"${fixture.provider}\" does not implement watch.`, {\n kind: \"config\",\n });\n }\n\n const controller = new AbortController();\n let iterator:\n | AsyncIterator<NonNullable<Awaited<ReturnType<typeof provider.waitForInbound>>>>\n | undefined;\n const stopWatch = onceAsync(async () => {\n controller.abort();\n await iterator?.return?.();\n });\n const shutdown = installShutdownHandler(stopWatch);\n const lifecycleErrors: unknown[] = [];\n try {\n const watchContext = {\n config: manifest.providers[fixture.provider]!,\n fixture,\n manifestPath: path,\n providerId: fixture.provider,\n signal: controller.signal,\n userName: manifest.userName,\n };\n if (watchContext.config.adapter === \"script\") {\n assertScriptStdinPayloadSize({\n fixture,\n provider: {\n config: watchContext.config,\n id: fixture.provider,\n manifestPath: path,\n },\n watch: {\n target: fixture.target,\n },\n });\n }\n const watch = provider.watch(watchContext);\n iterator = watch[Symbol.asyncIterator]();\n while (true) {\n const result = await iterator.next();\n if (result.done) {\n break;\n }\n const message = result.value;\n const written = await print(\n options.json\n ? formatJson(message)\n : `${sanitizeTerminalText(message.sentAt, true)} ${sanitizeTerminalText(message.author, true)} ${sanitizeTerminalText(message.text, true)}`,\n );\n if (!written) {\n break;\n }\n }\n } catch (error) {\n lifecycleErrors.push(error);\n }\n try {\n await stopWatch();\n } catch (error) {\n if (!lifecycleErrors.includes(error)) {\n lifecycleErrors.push(error);\n }\n }\n try {\n await provider.cleanup?.();\n } catch (error) {\n if (!lifecycleErrors.includes(error)) {\n lifecycleErrors.push(error);\n }\n } finally {\n shutdown.dispose();\n }\n if (lifecycleErrors.length > 0) {\n throw combineLifecycleErrors(lifecycleErrors, \"Crabline watch lifecycle failed.\");\n }\n });\n });\n\n program\n .command(\"serve <provider>\")\n .description(\"Start a local provider server that OpenClaw live adapters can target\")\n .option(\"--host <host>\", \"Bind host\", \"127.0.0.1\")\n .option(\"--port <port>\", \"Bind port\", \"0\")\n .option(\n \"--admin-token <token>\",\n \"Admin token for inbound test messages (or CRABLINE_ADMIN_TOKEN)\",\n )\n .option(\"--account <number>\", \"Signal account number\")\n .option(\"--access-token <token>\", \"Matrix or WhatsApp access token (or CRABLINE_ACCESS_TOKEN)\")\n .option(\n \"--bot-token <token>\",\n \"Mattermost, Slack, Telegram, or Zalo bot token (or CRABLINE_BOT_TOKEN)\",\n )\n .option(\n \"--bot-username <username>\",\n \"Mattermost, Telegram, or Zalo bot username\",\n \"crabline_bot\",\n )\n .option(\"--recorder <path>\", \"JSONL recorder path\")\n .option(\"--ready-file <path>\", \"Write the server runtime manifest to this path\")\n .option(\"--self-jid <jid>\", \"WhatsApp self JID\")\n .option(\"--show-secrets\", \"Print provider credentials in text output\", false)\n .option(\"--signing-secret <secret>\", \"Slack signing secret (or CRABLINE_SIGNING_SECRET)\")\n .option(\"--once\", \"Start, print the runtime manifest, and stop immediately\", false)\n .action(async (provider, commandOptions: ServeCommandOptions) => {\n const options = program.opts() as GlobalOptions;\n if (!isCrablineServerChannel(provider)) {\n throw new CrablineError(`Unsupported server channel: ${provider}`, {\n kind: \"config\",\n });\n }\n commandOptions.accessToken ??= process.env.CRABLINE_ACCESS_TOKEN;\n commandOptions.adminToken ??= process.env.CRABLINE_ADMIN_TOKEN;\n commandOptions.botToken ??= process.env.CRABLINE_BOT_TOKEN;\n commandOptions.signingSecret ??= process.env.CRABLINE_SIGNING_SECRET;\n if (!/^[0-9]+$/u.test(commandOptions.port)) {\n throw new CrablineError(`Invalid local server port: ${commandOptions.port}`, {\n kind: \"config\",\n });\n }\n const port = Number(commandOptions.port);\n if (!Number.isInteger(port) || port < 0 || port > 65_535) {\n throw new CrablineError(`Invalid local server port: ${commandOptions.port}`, {\n kind: \"config\",\n });\n }\n const factory = SERVE_PARAM_FACTORIES[provider];\n if (!factory) {\n throw new CrablineError(`Unsupported server channel: ${provider}`, {\n kind: \"config\",\n });\n }\n let server: StartedCrablineServer | undefined;\n let startupSettled = false;\n let settleStartup: (() => void) | undefined;\n const startup = new Promise<void>((resolve) => {\n settleStartup = resolve;\n });\n const finishStartup = () => {\n if (!startupSettled) {\n startupSettled = true;\n settleStartup?.();\n }\n };\n let publicationSettled = false;\n let settlePublication: (() => void) | undefined;\n const publication = new Promise<void>((resolve) => {\n settlePublication = resolve;\n });\n const finishPublication = () => {\n if (!publicationSettled) {\n publicationSettled = true;\n settlePublication?.();\n }\n };\n const close = onceAsync(async () => {\n await startup;\n await publication;\n await server?.close();\n });\n const shutdown = installShutdownHandler(close);\n let releaseReadyLease: (() => Promise<void>) | undefined;\n let publishedReady: { contents: string; identity: ReadyFileIdentity } | undefined;\n let actionFailed = false;\n let actionError: unknown;\n try {\n if (commandOptions.readyFile) {\n releaseReadyLease = await acquireReadyLease(commandOptions.readyFile);\n }\n if (shutdown.requested()) {\n finishStartup();\n finishPublication();\n await shutdown.wait();\n } else {\n try {\n server = await startServer(\n factory(\n {\n host: commandOptions.host,\n port,\n recorderPath: commandOptions.recorder,\n },\n commandOptions,\n ),\n );\n } finally {\n finishStartup();\n }\n if (shutdown.requested()) {\n finishPublication();\n await shutdown.wait();\n } else {\n try {\n const payload = formatJson(server.manifest);\n if (commandOptions.readyFile) {\n const readyContents = `${payload}\\n`;\n publishedReady = {\n contents: readyContents,\n identity: await publish(commandOptions.readyFile, readyContents),\n };\n }\n await print(\n options.json\n ? payload\n : renderServeText(server.manifest, commandOptions.showSecrets === true),\n );\n } finally {\n finishPublication();\n }\n if (shutdown.requested() || !commandOptions.once) {\n await shutdown.wait();\n }\n }\n }\n } catch (error) {\n actionFailed = true;\n actionError = error;\n }\n finishStartup();\n finishPublication();\n const cleanupErrors: unknown[] = [];\n const readyToRemove = publishedReady;\n for (const cleanup of [\n close,\n ...(commandOptions.readyFile && readyToRemove\n ? [\n () =>\n removeReady(\n commandOptions.readyFile!,\n readyToRemove.contents,\n readyToRemove.identity,\n ),\n ]\n : []),\n ...(releaseReadyLease ? [releaseReadyLease] : []),\n ]) {\n try {\n await cleanup();\n } catch (error) {\n if (!actionFailed || error !== actionError) {\n cleanupErrors.push(error);\n }\n }\n }\n shutdown.dispose();\n if (actionFailed || cleanupErrors.length > 0) {\n throw combineLifecycleErrors(\n actionFailed ? [actionError, ...cleanupErrors] : cleanupErrors,\n \"Crabline server lifecycle failed.\",\n );\n }\n });\n\n program\n .command(\"doctor\")\n .description(\"Diagnose common setup problems\")\n .action(async () => {\n const options = program.opts() as GlobalOptions;\n const { manifest } = await loadManifest(options.config);\n const findings = diagnose(manifest);\n const ok = findings.length === 0;\n const payload = { findings, ok };\n await print(options.json ? formatJson(payload) : ok ? \"doctor ok\" : findings.join(\"\\n\"));\n setExitCode(ok ? 0 : 10);\n });\n\n return program;\n}\n\ntype ShutdownSignal = \"SIGINT\" | \"SIGTERM\";\n\ntype SignalTarget = {\n on(event: ShutdownSignal, listener: () => void): unknown;\n removeListener(event: ShutdownSignal, listener: () => void): unknown;\n};\n\nfunction onceAsync(action: () => Promise<void>): () => Promise<void> {\n let result: Promise<void> | undefined;\n return () => (result ??= Promise.resolve().then(action));\n}\n\nasync function readReadyFileIdentity(filePath: string): Promise<ReadyFileIdentity> {\n const stats = await fs.stat(filePath, { bigint: true });\n return {\n birthtimeNs: stats.birthtimeNs,\n ctimeNs: stats.ctimeNs,\n dev: stats.dev,\n ino: stats.ino,\n size: stats.size,\n };\n}\n\nfunction sameReadyFileIdentity(left: ReadyFileIdentity, right: ReadyFileIdentity): boolean {\n return (\n left.birthtimeNs === right.birthtimeNs &&\n left.ctimeNs === right.ctimeNs &&\n left.dev === right.dev &&\n left.ino === right.ino &&\n left.size === right.size\n );\n}\n\nfunction sameReadyFileObject(left: ReadyFileIdentity, right: ReadyFileIdentity): boolean {\n return (\n left.birthtimeNs === right.birthtimeNs &&\n left.dev === right.dev &&\n left.ino === right.ino &&\n left.size === right.size\n );\n}\n\nasync function withReadyFileLock<T>(filePath: string, action: () => Promise<T>): Promise<T> {\n const release = await acquireReadyFileLease(filePath);\n let actionFailed = false;\n let actionError: unknown;\n let result: T | undefined;\n try {\n result = await action();\n } catch (error) {\n actionFailed = true;\n actionError = error;\n }\n try {\n await release();\n } catch (releaseError) {\n if (actionFailed) {\n throw combineLifecycleErrors(\n [actionError, releaseError],\n `Ready-file action and lock release both failed for \"${filePath}\".`,\n );\n }\n throw releaseError;\n }\n if (actionFailed) {\n throw actionError;\n }\n return result as T;\n}\n\nasync function acquireReadyFileLease(filePath: string): Promise<() => Promise<void>> {\n await fs.mkdir(nodePath.dirname(filePath), { recursive: true });\n return await lock(filePath, {\n realpath: false,\n retries: {\n factor: 1,\n maxTimeout: 10,\n minTimeout: 10,\n retries: 100,\n },\n stale: READY_FILE_LEASE_STALE_MS,\n update: READY_FILE_LEASE_UPDATE_MS,\n });\n}\n\nexport async function publishReadyFile(\n filePath: string,\n contents: string,\n): Promise<ReadyFileIdentity> {\n let publishedIdentity: ReadyFileIdentity | undefined;\n try {\n return await withReadyFileLock(filePath, async () => {\n publishedIdentity = await publishReadyFileUnlocked(filePath, contents);\n return publishedIdentity;\n });\n } catch (error) {\n if (publishedIdentity) {\n try {\n await removeReadyFileIfOwned(filePath, contents, publishedIdentity);\n } catch (cleanupError) {\n const aggregateError = new AggregateError(\n [error, cleanupError],\n `Ready-file publication and compensation both failed for \"${filePath}\".`,\n );\n aggregateError.cause = error;\n throw aggregateError;\n }\n }\n throw error;\n }\n}\n\nasync function publishReadyFileUnlocked(\n filePath: string,\n contents: string,\n): Promise<ReadyFileIdentity> {\n const suffix = `${process.pid}.${randomUUID()}.tmp`;\n const temporaryPath = nodePath.join(\n nodePath.dirname(filePath),\n `.${nodePath.basename(filePath)}.${suffix}`,\n );\n const backupPath = `${temporaryPath}.backup`;\n let manifestPublished = false;\n let destinationBackedUp = false;\n try {\n await fs.writeFile(temporaryPath, contents, {\n encoding: \"utf8\",\n flag: \"wx\",\n mode: 0o600,\n });\n destinationBackedUp = await backupReadyFile(filePath, backupPath);\n await fs.rename(temporaryPath, filePath);\n manifestPublished = true;\n const identity = await readReadyFileIdentity(filePath);\n if (destinationBackedUp) {\n await fs.rm(backupPath);\n destinationBackedUp = false;\n }\n return identity;\n } catch (error) {\n const recoveryErrors: unknown[] = [];\n if (manifestPublished && !destinationBackedUp) {\n await fs.rm(filePath, { force: true }).catch((cleanupError: unknown) => {\n recoveryErrors.push(cleanupError);\n });\n }\n if (destinationBackedUp) {\n await fs.rename(backupPath, filePath).catch((restoreError: unknown) => {\n recoveryErrors.push(restoreError);\n });\n }\n if (recoveryErrors.length > 0) {\n const aggregateError = new AggregateError(\n [error, ...recoveryErrors],\n `Ready-file replacement and recovery both failed for \"${filePath}\".`,\n );\n aggregateError.cause = error;\n throw aggregateError;\n }\n throw error;\n } finally {\n await fs.rm(temporaryPath, { force: true }).catch(() => undefined);\n }\n}\n\nasync function backupReadyFile(filePath: string, backupPath: string): Promise<boolean> {\n try {\n await fs.copyFile(filePath, backupPath, fsConstants.COPYFILE_EXCL);\n return true;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n throw error;\n }\n}\n\nasync function removeReadyFileIfOwned(\n filePath: string,\n expectedContents: string,\n expectedIdentity: ReadyFileIdentity,\n): Promise<void> {\n const tombstonePath = nodePath.join(\n nodePath.dirname(filePath),\n `.${nodePath.basename(filePath)}.${process.pid}.${randomUUID()}.remove`,\n );\n try {\n if (\n (await fs.readFile(filePath, \"utf8\")) !== expectedContents ||\n !sameReadyFileIdentity(await readReadyFileIdentity(filePath), expectedIdentity)\n ) {\n return;\n }\n await fs.rename(filePath, tombstonePath);\n if (\n (await fs.readFile(tombstonePath, \"utf8\")) === expectedContents &&\n sameReadyFileObject(await readReadyFileIdentity(tombstonePath), expectedIdentity)\n ) {\n await fs.rm(tombstonePath);\n return;\n }\n try {\n await fs.link(tombstonePath, filePath);\n await fs.rm(tombstonePath);\n } catch (restoreError) {\n throw new Error(\n `Ready-file path changed while removing \"${filePath}\"; the moved file remains at \"${tombstonePath}\".`,\n { cause: restoreError },\n );\n }\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n throw error;\n }\n }\n}\n\nexport async function removeReadyFile(\n filePath: string,\n expectedContents: string,\n expectedIdentity: ReadyFileIdentity,\n): Promise<void> {\n await withReadyFileLock(filePath, async () => {\n await removeReadyFileIfOwned(filePath, expectedContents, expectedIdentity);\n });\n}\n\nexport function waitForShutdown(\n close: () => Promise<void>,\n signalTarget: SignalTarget = process,\n): Promise<void> {\n return installShutdownHandler(close, signalTarget).wait();\n}\n\nfunction installShutdownHandler(\n close: () => Promise<void>,\n signalTarget: SignalTarget = process,\n): {\n dispose(): void;\n requested(): boolean;\n wait(): Promise<void>;\n} {\n let shutdownPromise: Promise<void> | undefined;\n let resolveWait: (() => void) | undefined;\n let rejectWait: ((error: unknown) => void) | undefined;\n const wait = new Promise<void>((resolve, reject) => {\n resolveWait = resolve;\n rejectWait = reject;\n });\n void wait.catch(() => undefined);\n const removeListeners = () => {\n signalTarget.removeListener(\"SIGINT\", shutdown);\n signalTarget.removeListener(\"SIGTERM\", shutdown);\n };\n const shutdown = () => {\n if (shutdownPromise) {\n return;\n }\n shutdownPromise = Promise.resolve().then(close);\n void shutdownPromise.then(\n () => {\n removeListeners();\n resolveWait?.();\n },\n (error: unknown) => {\n removeListeners();\n rejectWait?.(error);\n },\n );\n };\n signalTarget.on(\"SIGINT\", shutdown);\n signalTarget.on(\"SIGTERM\", shutdown);\n return {\n dispose: removeListeners,\n requested: () => shutdownPromise !== undefined,\n wait: () => wait,\n };\n}\n\nfunction combineLifecycleErrors(errors: unknown[], message: string): unknown {\n if (errors.length === 1) {\n return errors[0];\n }\n const aggregateError = new AggregateError(errors, message);\n aggregateError.cause = errors[0];\n return aggregateError;\n}\n\nfunction renderServeText(manifest: CrablineServerManifest, showSecrets: boolean) {\n const lines = [\n `${manifest.provider} local server ready`,\n ` apiRoot: ${manifest.provider === \"matrix\" ? manifest.endpoints.clientApiRoot : manifest.endpoints.apiRoot}`,\n ` inbound: ${manifest.endpoints.adminInboundUrl}`,\n ` recorder: ${manifest.recorderPath}`,\n ];\n const providerFields = renderServeProviderFields(manifest, showSecrets);\n if (!providerFields) {\n throw new CrablineError(`Unsupported server manifest provider: ${String(manifest.provider)}`, {\n kind: \"config\",\n });\n }\n lines.splice(2, 0, ...providerFields);\n return lines.join(\"\\n\");\n}\n\nfunction renderServeProviderFields(\n manifest: CrablineServerManifest,\n showSecrets: boolean,\n): string[] | undefined {\n const secret = (value: string) => (showSecrets ? value : \"<redacted>\");\n if (manifest.provider === \"mattermost\") {\n return [\n ` adminToken: ${secret(manifest.adminToken)}`,\n ` botToken: ${secret(manifest.botToken)}`,\n ` websocket: ${manifest.endpoints.websocketUrl}`,\n ];\n }\n if (manifest.provider === \"matrix\") {\n return [\n ` adminToken: ${secret(manifest.adminToken)}`,\n ` accessToken: ${secret(manifest.accessToken)}`,\n ` botUserId: ${manifest.botUserId}`,\n ` sync: ${manifest.endpoints.syncUrl}`,\n ];\n }\n if (manifest.provider === \"signal\") {\n return [` adminToken: ${secret(manifest.adminToken)}`, ` account: ${manifest.account}`];\n }\n if (manifest.provider === \"slack\") {\n return [\n ` adminToken: ${secret(manifest.adminToken)}`,\n ` botToken: ${secret(manifest.botToken)}`,\n ` signingSecret: ${secret(manifest.signingSecret)}`,\n ];\n }\n if (manifest.provider === \"telegram\") {\n return [\n ` adminToken: ${secret(manifest.adminToken)}`,\n ` botToken: ${secret(manifest.botToken)}`,\n ];\n }\n if (manifest.provider === \"whatsapp\") {\n const baileysWebSocketUrl = showSecrets\n ? manifest.endpoints.baileysWebSocketUrl\n : `${manifest.endpoints.baileysWebSocketUrl.split(\"?\")[0]}?access_token=<redacted>`;\n return [\n ` adminToken: ${secret(manifest.adminToken)}`,\n ` accessToken: ${secret(manifest.accessToken)}`,\n ` baileysWebSocket: ${baileysWebSocketUrl}`,\n ` messages: ${manifest.endpoints.messagesUrl}`,\n ` phoneNumber: ${manifest.endpoints.phoneNumberUrl}`,\n ` status: ${manifest.endpoints.statusUrl}`,\n ` selfJid: ${manifest.selfJid}`,\n ];\n }\n if (manifest.provider === \"zalo\") {\n return [\n ` adminToken: ${secret(manifest.adminToken)}`,\n ` botToken: ${secret(manifest.botToken)}`,\n ` botId: ${manifest.botId}`,\n ];\n }\n return undefined;\n}\n\nfunction renderProvidersText(payload: {\n configured: Array<{\n adapter: string;\n capabilities: string[];\n id: string;\n platform: string;\n status: string;\n }>;\n support: ReadonlyArray<{\n notes: string;\n platform: string;\n status: string;\n supports: readonly string[];\n }>;\n}): string {\n const lines = [\"configured providers:\"];\n if (payload.configured.length === 0) {\n lines.push(\" none\");\n } else {\n for (const provider of payload.configured) {\n lines.push(\n ` ${provider.id} platform=${provider.platform} adapter=${provider.adapter} status=${provider.status} supports=${provider.capabilities.join(\",\")}`,\n );\n }\n }\n\n lines.push(\"support catalog:\");\n for (const entry of payload.support) {\n lines.push(\n ` ${entry.platform} status=${entry.status} supports=${entry.supports.join(\",\")} ${entry.notes}`,\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction diagnose(manifest: Awaited<ReturnType<typeof loadManifest>>[\"manifest\"]): string[] {\n const findings: string[] = [];\n const seen = new Set<string>();\n\n for (const fixture of manifest.fixtures) {\n if (seen.has(fixture.id)) {\n findings.push(`duplicate fixture id: ${fixture.id}`);\n }\n seen.add(fixture.id);\n\n if (!manifest.providers[fixture.provider]) {\n findings.push(`fixture ${fixture.id} references unknown provider ${fixture.provider}`);\n }\n\n for (const envName of fixture.env) {\n if (!process.env[envName]) {\n findings.push(`fixture ${fixture.id} missing env ${envName}`);\n }\n }\n }\n\n for (const [providerId, provider] of Object.entries(manifest.providers)) {\n for (const envName of provider.env) {\n if (!process.env[envName]) {\n findings.push(`provider ${providerId} missing env ${envName}`);\n }\n }\n\n if (provider.adapter === \"script\" && provider.status === \"active\") {\n const commands = provider.script?.commands;\n if (provider.capabilities.includes(\"probe\") && !commands?.probe) {\n findings.push(`provider ${providerId} missing script.commands.probe`);\n }\n if (\n provider.capabilities.some((capability) =>\n [\"agent\", \"roundtrip\", \"send\"].includes(capability),\n ) &&\n !commands?.send\n ) {\n findings.push(`provider ${providerId} missing script.commands.send`);\n }\n if (\n provider.capabilities.some((capability) => [\"agent\", \"roundtrip\"].includes(capability)) &&\n !commands?.waitForInbound\n ) {\n findings.push(`provider ${providerId} missing script.commands.waitForInbound`);\n }\n }\n }\n\n return findings;\n}\n\nexport async function runCli(argv: string[]): Promise<number> {\n let exitCode = 0;\n const program = createProgram((code) => {\n exitCode = code;\n });\n const parserErrors: string[] = [];\n const parserOutput: string[] = [];\n const bufferParserErrors = (command: Command): void => {\n command.configureOutput({\n writeErr: (message) => parserErrors.push(message),\n writeOut: (message) => parserOutput.push(message),\n });\n for (const child of command.commands) {\n bufferParserErrors(child);\n }\n };\n bufferParserErrors(program);\n try {\n await program.parseAsync(argv);\n await writeOutput(process.stdout, parserOutput.join(\"\"));\n return exitCode;\n } catch (error) {\n const errorExitCode =\n error instanceof CommanderError\n ? error.code === \"commander.help\" && error.exitCode !== 0\n ? 1\n : error.exitCode\n : error instanceof CrablineError\n ? error.exitCode\n : 1;\n if (error instanceof CommanderError && errorExitCode === 0) {\n await writeOutput(process.stdout, parserOutput.join(\"\"));\n return 0;\n }\n const json = program.opts().json === true;\n if (json) {\n await writeOutput(\n process.stderr,\n `${formatJson({\n error: {\n ...(error instanceof CommanderError ? { code: error.code } : {}),\n exitCode: errorExitCode,\n ...(error instanceof CrablineError && error.kind ? { kind: error.kind } : {}),\n message:\n error instanceof CommanderError && error.code === \"commander.help\"\n ? \"No command specified.\"\n : ensureErrorMessage(error),\n },\n ok: false,\n })}\\n`,\n );\n } else if (error instanceof CommanderError) {\n await writeOutput(process.stderr, parserErrors.join(\"\"));\n } else {\n await writeOutput(process.stderr, `${ensureErrorMessage(error)}\\n`);\n }\n return errorExitCode;\n }\n}\n"]}
|
package/dist/src/config/load.js
CHANGED
|
@@ -1,9 +1,47 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readFile, stat } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import YAML from "yaml";
|
|
4
4
|
import { CrablineError, ensureErrorMessage } from "../core/errors.js";
|
|
5
5
|
import { ManifestSchema } from "./schema.js";
|
|
6
6
|
const DEFAULT_CONFIG_CANDIDATES = ["crabline.yaml", "crabline.yml", "crabline.json"];
|
|
7
|
+
class DuplicateJsonKeyError extends SyntaxError {
|
|
8
|
+
}
|
|
9
|
+
function configLoadError(resolvedPath, error, detail) {
|
|
10
|
+
return new CrablineError(`Unable to load config file "${resolvedPath}": ${detail}`, {
|
|
11
|
+
cause: error,
|
|
12
|
+
kind: "config",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function formatYamlParseError(error) {
|
|
16
|
+
if (!(error instanceof Error) || error.name !== "YAMLParseError") {
|
|
17
|
+
return "YAML parse failed.";
|
|
18
|
+
}
|
|
19
|
+
const yamlError = error;
|
|
20
|
+
const code = typeof yamlError.code === "string" ? ` (${yamlError.code})` : "";
|
|
21
|
+
const position = yamlError.linePos?.[0];
|
|
22
|
+
const location = typeof position?.line === "number" && typeof position.col === "number"
|
|
23
|
+
? ` at line ${position.line}, column ${position.col}`
|
|
24
|
+
: "";
|
|
25
|
+
return `YAML parse error${code}${location}.`;
|
|
26
|
+
}
|
|
27
|
+
function formatJsonParseError(error) {
|
|
28
|
+
if (error instanceof DuplicateJsonKeyError) {
|
|
29
|
+
return "JSON parse error: duplicate object key.";
|
|
30
|
+
}
|
|
31
|
+
if (!(error instanceof SyntaxError)) {
|
|
32
|
+
return "JSON parse failed.";
|
|
33
|
+
}
|
|
34
|
+
const position = /\bposition (\d+)\b/u.exec(error.message)?.[1];
|
|
35
|
+
return position ? `JSON parse error at position ${position}.` : "JSON parse error.";
|
|
36
|
+
}
|
|
37
|
+
function parseJson(raw) {
|
|
38
|
+
const parsed = JSON.parse(raw);
|
|
39
|
+
const document = YAML.parseDocument(raw, { schema: "json", uniqueKeys: true });
|
|
40
|
+
if (document.errors.some((error) => error.code === "DUPLICATE_KEY")) {
|
|
41
|
+
throw new DuplicateJsonKeyError("JSON contains a duplicate object key.");
|
|
42
|
+
}
|
|
43
|
+
return parsed;
|
|
44
|
+
}
|
|
7
45
|
export async function resolveConfigPath(explicitPath) {
|
|
8
46
|
if (explicitPath) {
|
|
9
47
|
return path.resolve(explicitPath);
|
|
@@ -11,8 +49,9 @@ export async function resolveConfigPath(explicitPath) {
|
|
|
11
49
|
for (const candidate of DEFAULT_CONFIG_CANDIDATES) {
|
|
12
50
|
const resolved = path.resolve(candidate);
|
|
13
51
|
try {
|
|
14
|
-
await
|
|
15
|
-
|
|
52
|
+
if ((await stat(resolved)).isFile()) {
|
|
53
|
+
return resolved;
|
|
54
|
+
}
|
|
16
55
|
}
|
|
17
56
|
catch (error) {
|
|
18
57
|
if (typeof error === "object" &&
|
|
@@ -28,14 +67,28 @@ export async function resolveConfigPath(explicitPath) {
|
|
|
28
67
|
}
|
|
29
68
|
export async function loadManifest(configPath) {
|
|
30
69
|
const resolvedPath = await resolveConfigPath(configPath);
|
|
70
|
+
let raw;
|
|
71
|
+
try {
|
|
72
|
+
raw = await readFile(resolvedPath, "utf8");
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
throw configLoadError(resolvedPath, error, ensureErrorMessage(error));
|
|
76
|
+
}
|
|
77
|
+
const isJson = path.extname(resolvedPath).toLowerCase() === ".json";
|
|
78
|
+
let parsed;
|
|
79
|
+
try {
|
|
80
|
+
parsed = isJson ? parseJson(raw) : YAML.parse(raw, { merge: true });
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const detail = isJson ? formatJsonParseError(error) : formatYamlParseError(error);
|
|
84
|
+
throw configLoadError(resolvedPath, new Error(detail), detail);
|
|
85
|
+
}
|
|
31
86
|
try {
|
|
32
|
-
const raw = await readFile(resolvedPath, "utf8");
|
|
33
|
-
const parsed = resolvedPath.endsWith(".json") ? JSON.parse(raw) : YAML.parse(raw);
|
|
34
87
|
const manifest = ManifestSchema.parse(parsed);
|
|
35
88
|
return { manifest, path: resolvedPath };
|
|
36
89
|
}
|
|
37
90
|
catch (error) {
|
|
38
|
-
throw
|
|
91
|
+
throw configLoadError(resolvedPath, error, ensureErrorMessage(error));
|
|
39
92
|
}
|
|
40
93
|
}
|
|
41
94
|
//# sourceMappingURL=load.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/config/load.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport YAML from \"yaml\";\nimport { CrablineError, ensureErrorMessage } from \"../core/errors.js\";\nimport { type ManifestDefinition, ManifestSchema } from \"./schema.js\";\n\nconst DEFAULT_CONFIG_CANDIDATES = [\"crabline.yaml\", \"crabline.yml\", \"crabline.json\"] as const;\n\nclass DuplicateJsonKeyError extends SyntaxError {}\n\nfunction configLoadError(resolvedPath: string, error: unknown, detail: string): CrablineError {\n return new CrablineError(`Unable to load config file \"${resolvedPath}\": ${detail}`, {\n cause: error,\n kind: \"config\",\n });\n}\n\nfunction formatYamlParseError(error: unknown): string {\n if (!(error instanceof Error) || error.name !== \"YAMLParseError\") {\n return \"YAML parse failed.\";\n }\n const yamlError = error as Error & {\n code?: unknown;\n linePos?: Array<{ col?: unknown; line?: unknown }>;\n };\n const code = typeof yamlError.code === \"string\" ? ` (${yamlError.code})` : \"\";\n const position = yamlError.linePos?.[0];\n const location =\n typeof position?.line === \"number\" && typeof position.col === \"number\"\n ? ` at line ${position.line}, column ${position.col}`\n : \"\";\n return `YAML parse error${code}${location}.`;\n}\n\nfunction formatJsonParseError(error: unknown): string {\n if (error instanceof DuplicateJsonKeyError) {\n return \"JSON parse error: duplicate object key.\";\n }\n if (!(error instanceof SyntaxError)) {\n return \"JSON parse failed.\";\n }\n const position = /\\bposition (\\d+)\\b/u.exec(error.message)?.[1];\n return position ? `JSON parse error at position ${position}.` : \"JSON parse error.\";\n}\n\nfunction parseJson(raw: string): unknown {\n const parsed: unknown = JSON.parse(raw);\n const document = YAML.parseDocument(raw, { schema: \"json\", uniqueKeys: true });\n if (document.errors.some((error) => error.code === \"DUPLICATE_KEY\")) {\n throw new DuplicateJsonKeyError(\"JSON contains a duplicate object key.\");\n }\n return parsed;\n}\n\nexport async function resolveConfigPath(explicitPath?: string): Promise<string> {\n if (explicitPath) {\n return path.resolve(explicitPath);\n }\n\n for (const candidate of DEFAULT_CONFIG_CANDIDATES) {\n const resolved = path.resolve(candidate);\n try {\n if ((await stat(resolved)).isFile()) {\n return resolved;\n }\n } catch (error) {\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error.code === \"ENOENT\" || error.code === \"ENOTDIR\")\n ) {\n continue;\n }\n throw error;\n }\n }\n\n throw new CrablineError(\n \"No config file found. Create crabline.yaml, crabline.yml, or crabline.json.\",\n { kind: \"config\" },\n );\n}\n\nexport async function loadManifest(\n configPath?: string,\n): Promise<{ manifest: ManifestDefinition; path: string }> {\n const resolvedPath = await resolveConfigPath(configPath);\n let raw: string;\n try {\n raw = await readFile(resolvedPath, \"utf8\");\n } catch (error) {\n throw configLoadError(resolvedPath, error, ensureErrorMessage(error));\n }\n\n const isJson = path.extname(resolvedPath).toLowerCase() === \".json\";\n let parsed: unknown;\n try {\n parsed = isJson ? parseJson(raw) : YAML.parse(raw, { merge: true });\n } catch (error) {\n const detail = isJson ? formatJsonParseError(error) : formatYamlParseError(error);\n throw configLoadError(resolvedPath, new Error(detail), detail);\n }\n\n try {\n const manifest = ManifestSchema.parse(parsed);\n return { manifest, path: resolvedPath };\n } catch (error) {\n throw configLoadError(resolvedPath, error, ensureErrorMessage(error));\n }\n}\n"]}
|