switchroom 0.16.29 → 0.16.46
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/dist/agent-scheduler/index.js +101 -84
- package/dist/auth-broker/index.js +100 -83
- package/dist/cli/autoaccept-poll.js +8 -8
- package/dist/cli/drive-write-pretool.mjs +10 -10
- package/dist/cli/notion-write-pretool.mjs +102 -85
- package/dist/cli/skill-validate-pretool.mjs +91 -91
- package/dist/cli/switchroom.js +62124 -60406
- package/dist/cli/ui/index.html +877 -214
- package/dist/host-control/main.js +1000 -256
- package/dist/vault/approvals/kernel-server.js +141 -121
- package/dist/vault/broker/server.js +163 -143
- package/examples/minimal.yaml +1 -1
- package/examples/switchroom.yaml +1 -1
- package/package.json +3 -2
- package/profiles/_shared/agent-self-service.md.hbs +7 -2
- package/profiles/_shared/reply-discipline.md.hbs +9 -0
- package/skills/switchroom-status/SKILL.md +1 -1
- package/telegram-plugin/auth-snapshot-format.ts +173 -67
- package/telegram-plugin/auto-fallback-fleet.ts +3 -6
- package/telegram-plugin/bridge/bridge.ts +2 -1
- package/telegram-plugin/card-format.ts +59 -3
- package/telegram-plugin/credits-watch.ts +4 -7
- package/telegram-plugin/dist/bridge/bridge.js +132 -114
- package/telegram-plugin/dist/gateway/gateway.js +4456 -1591
- package/telegram-plugin/dist/server.js +180 -163
- package/telegram-plugin/format.ts +551 -20
- package/telegram-plugin/gateway/approval-card.ts +7 -14
- package/telegram-plugin/gateway/approvals-commands.ts +6 -9
- package/telegram-plugin/gateway/auth-command.ts +35 -38
- package/telegram-plugin/gateway/boot-card.ts +7 -2
- package/telegram-plugin/gateway/chat-id-fallback.ts +46 -0
- package/telegram-plugin/gateway/config-approval-handler.ts +6 -9
- package/telegram-plugin/gateway/diff-preview-card.ts +3 -6
- package/telegram-plugin/gateway/gateway.ts +1524 -129
- package/telegram-plugin/gateway/ipc-protocol.ts +66 -2
- package/telegram-plugin/gateway/ipc-server.ts +91 -1
- package/telegram-plugin/gateway/linear-activity.ts +2 -5
- package/telegram-plugin/gateway/model-command.ts +173 -19
- package/telegram-plugin/gateway/obligation-turn-end.ts +27 -0
- package/telegram-plugin/gateway/permission-card-store.ts +104 -0
- package/telegram-plugin/gateway/permission-timeout.ts +25 -6
- package/telegram-plugin/gateway/status-pin-store.ts +302 -0
- package/telegram-plugin/gateway/turns-jsonl-rotate.ts +30 -0
- package/telegram-plugin/gateway/unhandled-rejection-policy.ts +12 -1
- package/telegram-plugin/gateway/vault-grant-inbound-builders.ts +35 -0
- package/telegram-plugin/gateway/vault-request-access-card.ts +61 -0
- package/telegram-plugin/history.ts +17 -7
- package/telegram-plugin/hooks/tool-label-pretool.d.mts +12 -0
- package/telegram-plugin/hooks/tool-label-pretool.mjs +54 -16
- package/telegram-plugin/idle-footer.ts +2 -2
- package/telegram-plugin/issues-card.ts +12 -7
- package/telegram-plugin/model-unavailable.ts +3 -6
- package/telegram-plugin/operator-events.ts +4 -6
- package/telegram-plugin/package.json +1 -1
- package/telegram-plugin/quota-check.ts +2 -2
- package/telegram-plugin/quota-watch.ts +7 -10
- package/telegram-plugin/server.ts +3 -1
- package/telegram-plugin/session-tail.ts +47 -1
- package/telegram-plugin/status-pin-driver.ts +102 -0
- package/telegram-plugin/status-pin.ts +76 -0
- package/telegram-plugin/stream-reply-handler.ts +33 -2
- package/telegram-plugin/subagent-watcher.ts +6 -3
- package/telegram-plugin/tests/always-allow-grant.test.ts +34 -2
- package/telegram-plugin/tests/auth-command-format2.test.ts +6 -2
- package/telegram-plugin/tests/auth-command-vernacular.test.ts +18 -0
- package/telegram-plugin/tests/auth-snapshot-format.test.ts +204 -45
- package/telegram-plugin/tests/card-format.test.ts +79 -0
- package/telegram-plugin/tests/chat-id-fallback.test.ts +74 -0
- package/telegram-plugin/tests/claude-code-event-contract.test.ts +151 -0
- package/telegram-plugin/tests/codespan-escaping-golden.test.ts +166 -0
- package/telegram-plugin/tests/credits-watch.test.ts +18 -0
- package/telegram-plugin/tests/format-consistency.test.ts +223 -0
- package/telegram-plugin/tests/formatting-parse-regression.test.ts +272 -0
- package/telegram-plugin/tests/formatting-torture-set.ts +218 -0
- package/telegram-plugin/tests/history.test.ts +38 -2
- package/telegram-plugin/tests/idle-footer.test.ts +53 -9
- package/telegram-plugin/tests/ipc-server-validate-rollout-status.test.ts +66 -0
- package/telegram-plugin/tests/issues-card.test.ts +24 -0
- package/telegram-plugin/tests/model-command.test.ts +213 -47
- package/telegram-plugin/tests/obligation-turn-end.test.ts +76 -0
- package/telegram-plugin/tests/paragraph-normalizer.test.ts +384 -3
- package/telegram-plugin/tests/permission-card-single-edit.test.ts +66 -0
- package/telegram-plugin/tests/permission-card-store.test.ts +83 -0
- package/telegram-plugin/tests/permission-timeout.test.ts +37 -6
- package/telegram-plugin/tests/permission-verdict-resume-guard.test.ts +23 -6
- package/telegram-plugin/tests/quota-check.test.ts +9 -2
- package/telegram-plugin/tests/quota-watch.test.ts +7 -7
- package/telegram-plugin/tests/rich-markdown-oracle.ts +469 -0
- package/telegram-plugin/tests/rollout-status-wiring.test.ts +81 -0
- package/telegram-plugin/tests/session-tail.test.ts +91 -0
- package/telegram-plugin/tests/status-pin-boot-recovery.test.ts +294 -0
- package/telegram-plugin/tests/status-pin-service-message-suppression.test.ts +210 -0
- package/telegram-plugin/tests/status-pin-store.test.ts +450 -0
- package/telegram-plugin/tests/status-pin.test.ts +202 -0
- package/telegram-plugin/tests/status-vocabulary-unification.test.ts +125 -0
- package/telegram-plugin/tests/stream-reply-handler.test.ts +39 -0
- package/telegram-plugin/tests/telegram-format.test.ts +121 -8
- package/telegram-plugin/tests/text-voice-scrub.test.ts +142 -22
- package/telegram-plugin/tests/tool-activity-summary.test.ts +88 -25
- package/telegram-plugin/tests/tts-normalize.test.ts +242 -0
- package/telegram-plugin/tests/turns-jsonl-rotate.test.ts +39 -0
- package/telegram-plugin/tests/unhandled-rejection-policy.test.ts +12 -0
- package/telegram-plugin/tests/vault-grant-inbound-builders.test.ts +54 -0
- package/telegram-plugin/tests/vault-request-access-card.test.ts +94 -0
- package/telegram-plugin/tests/vault-request-access-tool.test.ts +24 -0
- package/telegram-plugin/tests/voice-normalize-text.test.ts +256 -0
- package/telegram-plugin/tests/voice-ondemand.test.ts +299 -0
- package/telegram-plugin/tests/voice-out-one-send.test.ts +153 -0
- package/telegram-plugin/tests/voice-presynth.test.ts +437 -0
- package/telegram-plugin/tests/voice-synthesize-sidecar.test.ts +352 -0
- package/telegram-plugin/tests/voice-transcribe-sidecar.test.ts +332 -0
- package/telegram-plugin/tests/voice-transcribe.test.ts +188 -0
- package/telegram-plugin/tests/worker-activity-feed.test.ts +77 -10
- package/telegram-plugin/text-voice-scrub.ts +68 -18
- package/telegram-plugin/tool-activity-summary.ts +31 -116
- package/telegram-plugin/tts-normalize.ts +377 -0
- package/telegram-plugin/uat/driver.ts +474 -17
- package/telegram-plugin/uat/scenarios/jtbd-model-litellm-sr-dm.test.ts +34 -14
- package/telegram-plugin/uat/scenarios/jtbd-multipart-render-dm.test.ts +169 -0
- package/telegram-plugin/uat/scenarios/jtbd-narration-intent-dm.test.ts +134 -0
- package/telegram-plugin/uat/scenarios/jtbd-rich-formatting-render-dm.test.ts +254 -0
- package/telegram-plugin/uat/scenarios/jtbd-status-phase-transitions-dm.test.ts +109 -0
- package/telegram-plugin/uat/uat-driver.test.ts +297 -0
- package/telegram-plugin/voice-normalize-text.ts +340 -0
- package/telegram-plugin/voice-ondemand.ts +289 -0
- package/telegram-plugin/voice-presynth.ts +242 -0
- package/telegram-plugin/voice-synthesize-sidecar.ts +259 -0
- package/telegram-plugin/voice-synthesize.ts +128 -0
- package/telegram-plugin/voice-transcribe-sidecar.ts +176 -0
- package/telegram-plugin/worker-activity-feed.ts +22 -5
|
@@ -17,7 +17,7 @@ var __export = (target, all) => {
|
|
|
17
17
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
18
18
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
19
19
|
|
|
20
|
-
// node_modules
|
|
20
|
+
// node_modules/zod/v3/helpers/util.js
|
|
21
21
|
var util, objectUtil, ZodParsedType, getParsedType = (data) => {
|
|
22
22
|
const t = typeof data;
|
|
23
23
|
switch (t) {
|
|
@@ -148,7 +148,7 @@ var init_util = __esm(() => {
|
|
|
148
148
|
]);
|
|
149
149
|
});
|
|
150
150
|
|
|
151
|
-
// node_modules
|
|
151
|
+
// node_modules/zod/v3/ZodError.js
|
|
152
152
|
var ZodIssueCode, quotelessJson = (obj) => {
|
|
153
153
|
const json = JSON.stringify(obj, null, 2);
|
|
154
154
|
return json.replace(/"([^"]+)":/g, "$1:");
|
|
@@ -269,7 +269,7 @@ var init_ZodError = __esm(() => {
|
|
|
269
269
|
};
|
|
270
270
|
});
|
|
271
271
|
|
|
272
|
-
// node_modules
|
|
272
|
+
// node_modules/zod/v3/locales/en.js
|
|
273
273
|
var errorMap = (issue, _ctx) => {
|
|
274
274
|
let message;
|
|
275
275
|
switch (issue.code) {
|
|
@@ -376,7 +376,7 @@ var init_en = __esm(() => {
|
|
|
376
376
|
en_default = errorMap;
|
|
377
377
|
});
|
|
378
378
|
|
|
379
|
-
// node_modules
|
|
379
|
+
// node_modules/zod/v3/errors.js
|
|
380
380
|
function setErrorMap(map) {
|
|
381
381
|
overrideErrorMap = map;
|
|
382
382
|
}
|
|
@@ -389,7 +389,7 @@ var init_errors = __esm(() => {
|
|
|
389
389
|
overrideErrorMap = en_default;
|
|
390
390
|
});
|
|
391
391
|
|
|
392
|
-
// node_modules
|
|
392
|
+
// node_modules/zod/v3/helpers/parseUtil.js
|
|
393
393
|
function addIssueToContext(ctx, issueData) {
|
|
394
394
|
const overrideMap = getErrorMap();
|
|
395
395
|
const issue = makeIssue({
|
|
@@ -494,10 +494,10 @@ var init_parseUtil = __esm(() => {
|
|
|
494
494
|
});
|
|
495
495
|
});
|
|
496
496
|
|
|
497
|
-
// node_modules
|
|
497
|
+
// node_modules/zod/v3/helpers/typeAliases.js
|
|
498
498
|
var init_typeAliases = () => {};
|
|
499
499
|
|
|
500
|
-
// node_modules
|
|
500
|
+
// node_modules/zod/v3/helpers/errorUtil.js
|
|
501
501
|
var errorUtil;
|
|
502
502
|
var init_errorUtil = __esm(() => {
|
|
503
503
|
(function(errorUtil2) {
|
|
@@ -506,7 +506,7 @@ var init_errorUtil = __esm(() => {
|
|
|
506
506
|
})(errorUtil || (errorUtil = {}));
|
|
507
507
|
});
|
|
508
508
|
|
|
509
|
-
// node_modules
|
|
509
|
+
// node_modules/zod/v3/types.js
|
|
510
510
|
class ParseInputLazyPath {
|
|
511
511
|
constructor(parent, value, path, key) {
|
|
512
512
|
this._cachedPath = [];
|
|
@@ -3857,7 +3857,7 @@ var init_types = __esm(() => {
|
|
|
3857
3857
|
NEVER = INVALID;
|
|
3858
3858
|
});
|
|
3859
3859
|
|
|
3860
|
-
// node_modules
|
|
3860
|
+
// node_modules/zod/v3/external.js
|
|
3861
3861
|
var exports_external = {};
|
|
3862
3862
|
__export(exports_external, {
|
|
3863
3863
|
void: () => voidType,
|
|
@@ -3977,14 +3977,14 @@ var init_external = __esm(() => {
|
|
|
3977
3977
|
init_ZodError();
|
|
3978
3978
|
});
|
|
3979
3979
|
|
|
3980
|
-
// node_modules
|
|
3980
|
+
// node_modules/zod/index.js
|
|
3981
3981
|
var init_zod = __esm(() => {
|
|
3982
3982
|
init_external();
|
|
3983
3983
|
init_external();
|
|
3984
3984
|
});
|
|
3985
3985
|
|
|
3986
3986
|
// src/config/schema.ts
|
|
3987
|
-
var CodeRepoEntrySchema, AgentBindMountSchema, HttpDiffPollSchema, PollSpecSchema, TelegramMessageActionSchema, WebhookActionSchema, ActionSpecSchema, ScheduleEntrySchema, AgentSoulSchema, AgentToolsSchema, AgentMemorySchema, HookEntrySchema, AgentHooksSchema, SubagentSchema, SessionSchema, SessionContinuitySchema, webhookDispatchRule, TelegramChannelSchema, ChannelsSchema, TIMEZONE_REGEX, ApproverIdSchema, GoogleWorkspaceTierSchema, GoogleWorkspaceConfigSchema, LiteLLMConfigSchema, MicrosoftWorkspaceConfigSchema, NotionWorkspaceConfigSchema, AgentGoogleWorkspaceConfigSchema, AgentMicrosoftWorkspaceConfigSchema, AgentNotionWorkspaceConfigSchema, ReactionsSchema, ReactionDispatchSchema, ReleaseBlock, NetworkIsolationSchema, servesField, knowsField, profileFields, ProfileSchema, _omitExtends, defaultsFields, AgentDefaultsSchema, AgentSchema, TelegramConfigSchema, MemoryBackendConfigSchema, VaultConfigSchema, QuotaConfigSchema, AutoReleaseCheckSchema, HostControlConfigSchema, WebServiceConfigSchema, HostdConfigSchema, CronEgressSchema, CronConfigSchema, UserSchema, SwitchroomConfigSchema;
|
|
3987
|
+
var CodeRepoEntrySchema, AgentBindMountSchema, HttpDiffPollSchema, PollSpecSchema, TelegramMessageActionSchema, WebhookActionSchema, ActionSpecSchema, ScheduleEntrySchema, AgentSoulSchema, AgentToolsSchema, AgentMemorySchema, HookEntrySchema, AgentHooksSchema, SubagentSchema, SessionSchema, SessionContinuitySchema, webhookDispatchRule, TelegramChannelSchema, ChannelsSchema, TIMEZONE_REGEX, ApproverIdSchema, GoogleWorkspaceTierSchema, GoogleWorkspaceConfigSchema, LiteLLMConfigSchema, MicrosoftWorkspaceConfigSchema, NotionWorkspaceConfigSchema, AgentGoogleWorkspaceConfigSchema, AgentMicrosoftWorkspaceConfigSchema, AgentNotionWorkspaceConfigSchema, ReactionsSchema, ReactionDispatchSchema, ReleaseBlock, NetworkIsolationSchema, servesField, knowsField, profileFields, ProfileSchema, _omitExtends, defaultsFields, AgentDefaultsSchema, AgentSchema, TelegramConfigSchema, MemoryBackendConfigSchema, VaultConfigSchema, QuotaConfigSchema, AutoReleaseCheckSchema, HostControlConfigSchema, WebServiceConfigSchema, FleetHealthConfigSchema, HostdConfigSchema, CronEgressSchema, CronConfigSchema, UserSchema, SwitchroomConfigSchema;
|
|
3988
3988
|
var init_schema = __esm(() => {
|
|
3989
3989
|
init_zod();
|
|
3990
3990
|
CodeRepoEntrySchema = exports_external.object({
|
|
@@ -4180,19 +4180,30 @@ var init_schema = __esm(() => {
|
|
|
4180
4180
|
stream_mode: exports_external.enum(["pty", "checklist"]).optional().describe("How live progress is streamed to Telegram during a turn. " + "'pty' (default) surfaces text snapshots of Claude Code's TUI — " + "compatible but can flicker as Ink re-renders. 'checklist' drives " + "a structured progress card from session-tail events — stable " + "order, per-tool status emojis, fires only on semantic transitions."),
|
|
4181
4181
|
stream_throttle_ms: exports_external.number().int().nonnegative().optional().describe("Throttle window in ms between successive in-place stream edits " + "during a turn. Lower = more responsive stream, higher = fewer API " + "calls. Floored at 250 by draft-stream itself. Default 400 ms for DMs " + "and 1000 ms for groups/forums (respects Telegram's ~1 edit/sec/message " + "practical ceiling). Override per-agent if a particular agent needs " + "snappier or quieter streaming."),
|
|
4182
4182
|
clear_status_on_completion: exports_external.boolean().optional().describe("When true, the live activity/status feed (the in-place 'what it's " + "doing' message — Reading X, Searching the web for Y, …) is DELETED " + "when the turn's final answer lands, so only the reply remains. " + "Default false: the status message is left in the chat as a record " + "(its last step marked done) — no post-then-delete. Per-agent " + "override; cascades defaults → profile → agent (per-key)."),
|
|
4183
|
+
pin_status_while_working: exports_external.boolean().optional().describe("When true (default), the framework SILENTLY pins the already-" + "rendered status message while its work is in-flight and auto-unpins " + "it on completion — the per-turn activity/status message (foreground) " + "and the '\uD83D\uDEE0 Worker' background-worker message. Keeps in-flight work " + "in view when the conversation scrolls past it (fast turns, stacked " + "background workers, long turns). No new surface is rendered; it pins " + "a message the chat already owns. The pin never buzzes the device. " + "The ONE sanctioned pin under chat-is-the-single-source-of-truth. " + "Set false to disable. Per-agent override; cascades defaults → " + "profile → agent (per-key)."),
|
|
4183
4184
|
hotReloadStable: exports_external.boolean().optional().describe("If true, the stable workspace prefix (AGENTS.md, SOUL.md, USER.md, " + "IDENTITY.md, TOOLS.md) is re-injected on every turn via " + "the UserPromptSubmit hook instead of baked into --append-system-prompt " + "at session start. Lets workspace edits propagate without a restart. " + "Costs ~5-10% per-turn latency/spend since the stable prefix is no " + "longer prompt-cached."),
|
|
4184
4185
|
inject_on_change: exports_external.boolean().optional().describe("Context-efficiency gate for per-turn hook injection (default true). " + "When true (the default), the turn-pacing directive and dynamic " + "workspace content are only re-emitted when their content changes or " + "the session_id changes — suppressing redundant injection that " + "otherwise triples compaction frequency. Set to false to revert to " + "the legacy always-emit behaviour (every turn injects the full " + "content regardless of whether it changed)."),
|
|
4185
4186
|
orphan_promotion_ms: exports_external.number().int().nonnegative().optional().describe("How long (ms) a parent turn waits for a sub-agent JSONL watcher " + "to deliver sub_agent_started before the heartbeat promotes the spawn " + "to a synthesised 'running' row. Default 5000. Set to 0 to disable " + "orphan promotion entirely."),
|
|
4186
4187
|
cold_sub_agent_threshold_ms: exports_external.number().int().nonnegative().optional().describe("JSONL-cold threshold (ms). When a running sub-agent emits no events " + "for this long, the heartbeat synthesises a turn_end for it so the " + "deferred-completion path can proceed. Default 30000. Set to 0 to " + "disable the synthetic close."),
|
|
4187
4188
|
deferred_completion_timeout_ms: exports_external.number().int().nonnegative().optional().describe("Force-close timeout (ms) for deferred sub-agent completion. After " + "the parent turn_end arrives while sub-agents are still running, the " + "card is force-closed after this many ms even if sub-agents never " + "finish. Watcher-disconnect safety net. Default 180000 (3 min)."),
|
|
4189
|
+
approval_timeout_minutes: exports_external.number().int().nonnegative().optional().describe("Operator approval-card lifetime (minutes) for the tool-use 'Allow " + "once' card and the vault grant decision wait. After this long with " + "no operator tap, the card auto-denies (a TIMEOUT, not a denial — the " + "agent is told not to retry). Default 60. hostd-gated verbs " + "(mcp__hostd__*) keep their own longer window; the hostd " + "config-propose card is not governed by this key."),
|
|
4188
4190
|
sub_agent_tick_interval_ms: exports_external.number().int().nonnegative().optional().describe("Heartbeat tick interval (ms) for sub-agent rendering. Forces a " + "re-render of the elapsed-time counter while sub-agents are running, " + "even during silent stretches between tool calls. Default 10000 (10 s). " + "Set to 0 to disable the elapsed-ticker path."),
|
|
4189
4191
|
edit_budget_threshold: exports_external.number().int().nonnegative().optional().describe("Telegram API edit budget per minute before the progress-card driver " + "falls back to a slower coalesce window. When a chat accumulates more " + "than this many card edits in the trailing 60 s, the driver switches " + "to a wider coalesce interval until the rate drops back. Default 18. " + "Increase if your gateway frequently bumps the Telegram edit-rate ceiling " + "with many parallel sub-agents; decrease for a more conservative buffer."),
|
|
4190
4192
|
stickers: exports_external.record(exports_external.string(), exports_external.string()).optional().describe("Sticker aliases for the `send_sticker` MCP tool (#576). Maps a " + "short alias name (e.g. 'happy', 'thinking') to a Telegram file_id. " + "Operator-curated — capture file_ids from inbound stickers the user " + "sends and add them here. The agent calls send_sticker(chat_id, " + "alias='happy') and the gateway resolves to the file_id at send " + "time. Aliases enable persona-flavored expressiveness without " + "exposing raw file_ids in the agent prompt. Personal-assistant / " + "health-coach personas benefit; coding agents typically don't " + "configure any."),
|
|
4191
4193
|
voice_in: exports_external.object({
|
|
4192
4194
|
enabled: exports_external.boolean().optional().describe("Master switch for voice-message transcription."),
|
|
4193
4195
|
provider: exports_external.enum(["openai"]).optional().describe("Transcription provider. Only 'openai' (Whisper API) supported in the spike (#578); " + "Groq/Deepgram/local-whisper-cli are follow-up choices."),
|
|
4194
|
-
language: exports_external.string().optional().describe("Optional ISO-639-1 language hint (e.g. 'en', 'fr'). Skips Whisper's auto-detection.")
|
|
4195
|
-
|
|
4196
|
+
language: exports_external.string().optional().describe("Optional ISO-639-1 language hint (e.g. 'en', 'fr'). Skips Whisper's auto-detection."),
|
|
4197
|
+
api_key: exports_external.string().optional().describe("Transcription-provider API key, as a `vault:<key>` reference " + "(e.g. 'vault:openai/api-key' — the default if omitted). The " + "gateway resolves it through the vault broker at use-time and " + "never writes the resolved value to disk or the agent prompt. " + "`switchroom enable voice-in` vault-stores the key and writes " + "this reference for you. A literal key is accepted but " + "discouraged — keep secrets in the vault.")
|
|
4198
|
+
}).optional().describe("Inbound voice-message transcription (#578). When enabled, voice/audio " + "messages from allowlisted users are downloaded, transcribed via the " + "configured provider, and surface to the agent as the user's text. " + "The provider API key is a `vault:` reference (`api_key`, default " + "`vault:openai/api-key`) resolved through the vault broker at " + "use-time — opt-in third-party key, honest-exception per the " + "subscription-honest outcome. Off by default — opt-in per agent. " + "Cascades from defaults.channels.telegram.voice_in. " + "(Migrated from per-agent root in #596 — see consistency unification.)"),
|
|
4199
|
+
voice_out: exports_external.object({
|
|
4200
|
+
enabled: exports_external.boolean().optional().describe("Master switch for spoken-reply (TTS) voice notes."),
|
|
4201
|
+
engine: exports_external.enum(["kokoro", "openai"]).default("kokoro").describe("Synthesis engine. 'kokoro' = local voice sidecar (POST /tts, " + "subscription-honest, no third-party key); 'openai' = OpenAI TTS " + "cloud (honest-exception, requires an `api_key` vault ref). " + "'kokoro' is only active when the host voice verdict is local " + "(SWITCHROOM_VOICE_ENGINE === 'local'); otherwise voice-out is a " + "no-op and replies stay text-only."),
|
|
4202
|
+
voice: exports_external.string().optional().describe("Engine-specific voice id (e.g. a Kokoro voice name or an OpenAI " + "voice like 'alloy'). Optional — the sidecar/engine has its own " + "default when omitted."),
|
|
4203
|
+
reply_mode: exports_external.enum(["voice+text", "voice-only", "on-demand"]).default("voice+text").describe("How the spoken reply accompanies the text. 'voice+text' sends " + "both the normal text reply and a voice note; 'voice-only' sends " + "the voice note and suppresses the text body. 'on-demand' sends " + "the text reply with a single '\uD83D\uDD0A Listen' inline button and " + "synthesizes NO audio until the user taps it — zero GPU/sidecar " + "work unless requested, which keeps the voice pipeline " + "subscription-honest and visible (nothing is generated behind the " + "user's back). The Listen button is injected ONLY when the reply " + "carries no agent-authored buttons, to avoid colliding with the " + "single_use keyboard-strip that protects agent buttons from " + "double-fire. In every mode the text reply is ALWAYS still sent " + "when synthesis fails or the reply exceeds max_chars — the user's " + "answer is never dropped silently."),
|
|
4204
|
+
max_chars: exports_external.number().int().positive().optional().describe("Per-voice-note chunk size (chars). Default 600; clamped to the " + "engine's hard cap (1200). A reply LONGER than this is NOT truncated " + "to text — it's split on sentence/paragraph boundaries and spoken " + "across several sequential voice notes, so the full answer is heard " + "even when the user can't read the screen (driving / cycling). Lower " + "it for snappier individual notes; raise it (up to 1200) for fewer, " + "longer notes."),
|
|
4205
|
+
api_key: exports_external.string().optional().describe("OpenAI TTS API key as a `vault:<key>` reference (only used when " + "engine='openai'; default 'vault:openai/api-key'). Resolved through " + "the vault broker at use-time and never written to disk or the agent " + "prompt. Ignored for engine='kokoro' (the sidecar needs no key).")
|
|
4206
|
+
}).optional().describe("Outbound spoken replies via TTS (PR-C2). When enabled, the gateway " + "synthesizes the agent's text reply into an OGG/Opus voice note and " + "sends it alongside (or instead of) the text, per reply_mode. The " + "'kokoro' engine uses the local voice sidecar (POST /tts) and is only " + "active when the host voice verdict is local; the 'openai' engine is " + "an honest-exception cloud path gated on an `api_key` vault ref. Voice " + "is best-effort and fully non-fatal — any TTS error falls back to the " + "text reply. Off by default — opt-in per agent. " + "Cascades from defaults.channels.telegram.voice_out."),
|
|
4196
4207
|
telegraph: exports_external.object({
|
|
4197
4208
|
enabled: exports_external.boolean().optional().describe("Master switch for Telegraph Instant View publishing."),
|
|
4198
4209
|
threshold: exports_external.number().int().positive().optional().describe("Char count above which a reply is published to Telegraph instead of " + "HTML-chunked into multiple Telegram messages. Default 3000 (≈3 chunks)."),
|
|
@@ -4436,7 +4447,7 @@ var init_schema = __esm(() => {
|
|
|
4436
4447
|
secrets: exports_external.array(exports_external.string().regex(/^[a-zA-Z0-9_\-/]+$/, "Secret key names must contain only alphanumeric characters, underscores, hyphens, and forward slashes")).optional(),
|
|
4437
4448
|
reactions: ReactionsSchema,
|
|
4438
4449
|
reaction_dispatch: ReactionDispatchSchema,
|
|
4439
|
-
model: exports_external.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._\-/\[\]:]*$/, "Model name must be alphanumeric with ._-/[]: only (no spaces or shell specials)").optional().describe("Claude model override (e.g., 'claude-sonnet-
|
|
4450
|
+
model: exports_external.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._\-/\[\]:]*$/, "Model name must be alphanumeric with ._-/[]: only (no spaces or shell specials)").optional().describe("Claude model override (e.g., 'claude-sonnet-5')"),
|
|
4440
4451
|
thinking_effort: exports_external.enum(["low", "medium", "high", "xhigh", "max"]).optional().describe("Adaptive-thinking effort level passed as --effort to the claude CLI. " + "Per-agent override wins over defaults.thinking_effort. " + "lower = faster/cheaper, higher = more reasoning. Omit to use Claude's default."),
|
|
4441
4452
|
permission_mode: exports_external.enum(["acceptEdits", "auto", "bypassPermissions", "default", "dontAsk", "plan"]).optional().describe("Permission mode passed as --permission-mode to the claude CLI. " + "Per-agent override wins over defaults.permission_mode. " + "Warning: bypassPermissions and dontAsk skip all safety checks — use only in trusted sandboxes."),
|
|
4442
4453
|
fallback_model: exports_external.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9._\-/\[\]:]*$/, "Fallback model name must be alphanumeric with ._-/[]: only").optional().describe("Fallback model passed as --fallback-model to the claude CLI. " + "Per-agent override wins over defaults.fallback_model. " + "Used when the primary model is overloaded. Note: only functional in --print (non-interactive) mode per Claude CLI docs; silently no-ops in interactive sessions."),
|
|
@@ -4567,6 +4578,11 @@ var init_schema = __esm(() => {
|
|
|
4567
4578
|
WebServiceConfigSchema = exports_external.object({
|
|
4568
4579
|
managed: exports_external.boolean().default(false).describe("Whether `switchroom update` refreshes the web-service container " + "(dashboard + GitHub-webhook receiver) via `switchroom webd " + "install`. Default: false — existing installs run the web server " + "as the legacy `switchroom-web.service` systemd unit and must not " + "be surprised by a container takeover of host loopback 127.0.0.1:" + "8080 mid-update. Set true ONLY after cutting over to the " + "container (stop+disable the systemd unit, `switchroom webd " + "install`). The container runs in its own compose project " + "(`switchroom-web`), separate from the agent fleet, with " + "network_mode: host so it keeps owning loopback:8080 for the " + "cloudflared tunnel + tailscale serve consumers.")
|
|
4569
4580
|
});
|
|
4581
|
+
FleetHealthConfigSchema = exports_external.object({
|
|
4582
|
+
owner_agent: exports_external.string().regex(/^[a-z0-9][a-z0-9_-]{0,50}$/, {
|
|
4583
|
+
message: "owner_agent must match the standard agent-name pattern"
|
|
4584
|
+
}).optional().describe("The admin agent that runs the Fleet Health sensor + deep-dive crons " + "(RFC fleet-health.md). Default unset → the feature is inert: no crons " + "are scheduled and the admin page renders its empty state. The named " + "agent must be admin: true. A dedicated owner (not any admin) keeps " + "the fleet-health work attributable, its memory scoped, and its token " + "spend accountable. The detection runs ONLY as operator-set schedules " + "on this agent — never a self-authored loop (on-leash, " + "no-self-escalation).")
|
|
4585
|
+
});
|
|
4570
4586
|
HostdConfigSchema = exports_external.object({
|
|
4571
4587
|
config_edit_enabled: exports_external.boolean().default(false).describe("Opt-in toggle for the `config_propose_edit` hostd verb (RFC " + "admin-agent-config-edit §3). Default false — the verb returns " + "`E_CONFIG_EDIT_DISABLED` until the operator explicitly flips " + "this to true. When true, admin agents can propose unified-diff " + "patches against " + "`/state/config/switchroom.yaml`, gated by an operator approval " + "card in the primary chat. Same trust posture as `update_apply` " + "and `agent_restart`: the human-in-the-loop tap is the security " + "boundary, not the agent's judgement."),
|
|
4572
4588
|
config_edit_rate_per_hour: exports_external.number().int().min(1).max(20).default(3).describe("Per-requesting-agent rate cap for `config_propose_edit` cards " + "(RFC admin-agent-config-edit §5). Default 3 cards/hour; min 1, " + "max 20. ENFORCED server-side: a caller exceeding this in a sliding " + "1-hour window is rejected with `E_RATE_LIMITED` (carrying a " + "`retry_after` fix) instead of posting another operator approval " + "card — so a looping agent is throttled rather than spamming the chat.")
|
|
@@ -4615,6 +4631,7 @@ var init_schema = __esm(() => {
|
|
|
4615
4631
|
quota: QuotaConfigSchema.optional().describe("Optional weekly/monthly USD spend budgets rendered in the session " + "greeting. Usage is read from ccusage at runtime; no network calls."),
|
|
4616
4632
|
host_control: HostControlConfigSchema.default({}).describe("Host-control daemon configuration. Defaults to enabled=true since " + "RFC C Phase 2 (reference/rfcs/host-control-daemon.md). Omit the block " + "to accept defaults; set `enabled: false` only on legacy systemd-" + "mode installs (removal tracked as RFC C Phase 3)."),
|
|
4617
4633
|
hostd: HostdConfigSchema.default({}).describe("hostd verb-level knobs (RFC admin-agent-config-edit). Distinct " + "from `host_control:` which governs whether the daemon runs at " + "all. Scopes the opt-in flag and rate cap for the " + "`config_propose_edit` verb (disabled by default)."),
|
|
4634
|
+
fleet_health: FleetHealthConfigSchema.default({}).describe("Fleet Health — job-spec-anchored, operator-facing issue tracker (RFC " + "fleet-health.md, serves fleet-stays-healthy). Assigns the owner agent " + "that runs the nightly model-free sensor + weekly deep-dive. Default " + "unset owner_agent → inert; the admin page renders an empty state."),
|
|
4618
4635
|
web_service: WebServiceConfigSchema.default({}).describe("Web-service container (dashboard + GitHub-webhook receiver) config. " + "Defaults to managed=false so existing systemd-mode installs are " + "untouched. Set managed: true after cutting over to the " + "`switchroom-web` container — then `switchroom update` keeps it " + "refreshed. See `switchroom webd install`."),
|
|
4619
4636
|
google_accounts: exports_external.record(exports_external.string().regex(/^[^@\s:]+@[^@\s:]+\.[^@\s:]+$/, {
|
|
4620
4637
|
message: "Account key must be a Google account email like 'alice@example.com' (colons not allowed)"
|
|
@@ -5029,7 +5046,42 @@ var init_merge = __esm(() => {
|
|
|
5029
5046
|
})(mergeAgentConfig ||= {});
|
|
5030
5047
|
});
|
|
5031
5048
|
|
|
5032
|
-
//
|
|
5049
|
+
// src/config/paths.ts
|
|
5050
|
+
import { existsSync } from "node:fs";
|
|
5051
|
+
import { resolve } from "node:path";
|
|
5052
|
+
function home() {
|
|
5053
|
+
return process.env.HOME ?? "/root";
|
|
5054
|
+
}
|
|
5055
|
+
function warnLegacyStateOnce(legacy) {
|
|
5056
|
+
if (_legacyStateWarned)
|
|
5057
|
+
return;
|
|
5058
|
+
_legacyStateWarned = true;
|
|
5059
|
+
process.stderr.write(`[switchroom] DEPRECATED: reading legacy state from ${legacy}. ` + "Run `mv ~/.clerk ~/.switchroom` (and rename any top-level `clerk:` " + "key in switchroom.yaml to `switchroom:`). This back-compat shim is " + `REMOVED in v0.13.0 — no automatic migration exists.
|
|
5060
|
+
`);
|
|
5061
|
+
}
|
|
5062
|
+
function resolveDualPath(pathStr) {
|
|
5063
|
+
const h = home();
|
|
5064
|
+
if (pathStr.startsWith("~/")) {
|
|
5065
|
+
const rest = pathStr.slice(2);
|
|
5066
|
+
const absolute = resolve(h, rest);
|
|
5067
|
+
if (rest.startsWith(`${DEFAULT_STATE_DIR}/`)) {
|
|
5068
|
+
const frag = rest.slice(DEFAULT_STATE_DIR.length + 1);
|
|
5069
|
+
if (!existsSync(absolute)) {
|
|
5070
|
+
const legacy = resolve(h, LEGACY_STATE_DIR, frag);
|
|
5071
|
+
if (existsSync(legacy)) {
|
|
5072
|
+
warnLegacyStateOnce(legacy);
|
|
5073
|
+
return legacy;
|
|
5074
|
+
}
|
|
5075
|
+
}
|
|
5076
|
+
}
|
|
5077
|
+
return absolute;
|
|
5078
|
+
}
|
|
5079
|
+
return resolve(pathStr);
|
|
5080
|
+
}
|
|
5081
|
+
var DEFAULT_STATE_DIR = ".switchroom", LEGACY_STATE_DIR = ".clerk", _legacyStateWarned = false;
|
|
5082
|
+
var init_paths = () => {};
|
|
5083
|
+
|
|
5084
|
+
// node_modules/yaml/dist/nodes/identity.js
|
|
5033
5085
|
var require_identity = __commonJS((exports) => {
|
|
5034
5086
|
var ALIAS = Symbol.for("yaml.alias");
|
|
5035
5087
|
var DOC = Symbol.for("yaml.document");
|
|
@@ -5083,7 +5135,7 @@ var require_identity = __commonJS((exports) => {
|
|
|
5083
5135
|
exports.isSeq = isSeq;
|
|
5084
5136
|
});
|
|
5085
5137
|
|
|
5086
|
-
// node_modules
|
|
5138
|
+
// node_modules/yaml/dist/visit.js
|
|
5087
5139
|
var require_visit = __commonJS((exports) => {
|
|
5088
5140
|
var identity = require_identity();
|
|
5089
5141
|
var BREAK = Symbol("break visit");
|
|
@@ -5238,7 +5290,7 @@ var require_visit = __commonJS((exports) => {
|
|
|
5238
5290
|
exports.visitAsync = visitAsync;
|
|
5239
5291
|
});
|
|
5240
5292
|
|
|
5241
|
-
// node_modules
|
|
5293
|
+
// node_modules/yaml/dist/doc/directives.js
|
|
5242
5294
|
var require_directives = __commonJS((exports) => {
|
|
5243
5295
|
var identity = require_identity();
|
|
5244
5296
|
var visit = require_visit();
|
|
@@ -5390,7 +5442,7 @@ var require_directives = __commonJS((exports) => {
|
|
|
5390
5442
|
exports.Directives = Directives;
|
|
5391
5443
|
});
|
|
5392
5444
|
|
|
5393
|
-
// node_modules
|
|
5445
|
+
// node_modules/yaml/dist/doc/anchors.js
|
|
5394
5446
|
var require_anchors = __commonJS((exports) => {
|
|
5395
5447
|
var identity = require_identity();
|
|
5396
5448
|
var visit = require_visit();
|
|
@@ -5452,7 +5504,7 @@ var require_anchors = __commonJS((exports) => {
|
|
|
5452
5504
|
exports.findNewAnchor = findNewAnchor;
|
|
5453
5505
|
});
|
|
5454
5506
|
|
|
5455
|
-
// node_modules
|
|
5507
|
+
// node_modules/yaml/dist/doc/applyReviver.js
|
|
5456
5508
|
var require_applyReviver = __commonJS((exports) => {
|
|
5457
5509
|
function applyReviver(reviver, obj, key, val) {
|
|
5458
5510
|
if (val && typeof val === "object") {
|
|
@@ -5499,7 +5551,7 @@ var require_applyReviver = __commonJS((exports) => {
|
|
|
5499
5551
|
exports.applyReviver = applyReviver;
|
|
5500
5552
|
});
|
|
5501
5553
|
|
|
5502
|
-
// node_modules
|
|
5554
|
+
// node_modules/yaml/dist/nodes/toJS.js
|
|
5503
5555
|
var require_toJS = __commonJS((exports) => {
|
|
5504
5556
|
var identity = require_identity();
|
|
5505
5557
|
function toJS(value, arg, ctx) {
|
|
@@ -5526,7 +5578,7 @@ var require_toJS = __commonJS((exports) => {
|
|
|
5526
5578
|
exports.toJS = toJS;
|
|
5527
5579
|
});
|
|
5528
5580
|
|
|
5529
|
-
// node_modules
|
|
5581
|
+
// node_modules/yaml/dist/nodes/Node.js
|
|
5530
5582
|
var require_Node = __commonJS((exports) => {
|
|
5531
5583
|
var applyReviver = require_applyReviver();
|
|
5532
5584
|
var identity = require_identity();
|
|
@@ -5563,7 +5615,7 @@ var require_Node = __commonJS((exports) => {
|
|
|
5563
5615
|
exports.NodeBase = NodeBase;
|
|
5564
5616
|
});
|
|
5565
5617
|
|
|
5566
|
-
// node_modules
|
|
5618
|
+
// node_modules/yaml/dist/nodes/Alias.js
|
|
5567
5619
|
var require_Alias = __commonJS((exports) => {
|
|
5568
5620
|
var anchors = require_anchors();
|
|
5569
5621
|
var visit = require_visit();
|
|
@@ -5671,7 +5723,7 @@ var require_Alias = __commonJS((exports) => {
|
|
|
5671
5723
|
exports.Alias = Alias;
|
|
5672
5724
|
});
|
|
5673
5725
|
|
|
5674
|
-
// node_modules
|
|
5726
|
+
// node_modules/yaml/dist/nodes/Scalar.js
|
|
5675
5727
|
var require_Scalar = __commonJS((exports) => {
|
|
5676
5728
|
var identity = require_identity();
|
|
5677
5729
|
var Node = require_Node();
|
|
@@ -5699,7 +5751,7 @@ var require_Scalar = __commonJS((exports) => {
|
|
|
5699
5751
|
exports.isScalarValue = isScalarValue;
|
|
5700
5752
|
});
|
|
5701
5753
|
|
|
5702
|
-
// node_modules
|
|
5754
|
+
// node_modules/yaml/dist/doc/createNode.js
|
|
5703
5755
|
var require_createNode = __commonJS((exports) => {
|
|
5704
5756
|
var Alias = require_Alias();
|
|
5705
5757
|
var identity = require_identity();
|
|
@@ -5771,7 +5823,7 @@ var require_createNode = __commonJS((exports) => {
|
|
|
5771
5823
|
exports.createNode = createNode;
|
|
5772
5824
|
});
|
|
5773
5825
|
|
|
5774
|
-
// node_modules
|
|
5826
|
+
// node_modules/yaml/dist/nodes/Collection.js
|
|
5775
5827
|
var require_Collection = __commonJS((exports) => {
|
|
5776
5828
|
var createNode = require_createNode();
|
|
5777
5829
|
var identity = require_identity();
|
|
@@ -5886,7 +5938,7 @@ var require_Collection = __commonJS((exports) => {
|
|
|
5886
5938
|
exports.isEmptyPath = isEmptyPath;
|
|
5887
5939
|
});
|
|
5888
5940
|
|
|
5889
|
-
// node_modules
|
|
5941
|
+
// node_modules/yaml/dist/stringify/stringifyComment.js
|
|
5890
5942
|
var require_stringifyComment = __commonJS((exports) => {
|
|
5891
5943
|
var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
|
|
5892
5944
|
function indentComment(comment, indent) {
|
|
@@ -5903,7 +5955,7 @@ var require_stringifyComment = __commonJS((exports) => {
|
|
|
5903
5955
|
exports.stringifyComment = stringifyComment;
|
|
5904
5956
|
});
|
|
5905
5957
|
|
|
5906
|
-
// node_modules
|
|
5958
|
+
// node_modules/yaml/dist/stringify/foldFlowLines.js
|
|
5907
5959
|
var require_foldFlowLines = __commonJS((exports) => {
|
|
5908
5960
|
var FOLD_FLOW = "flow";
|
|
5909
5961
|
var FOLD_BLOCK = "block";
|
|
@@ -6040,7 +6092,7 @@ ${indent}${text.slice(fold + 1, end2)}`;
|
|
|
6040
6092
|
exports.foldFlowLines = foldFlowLines;
|
|
6041
6093
|
});
|
|
6042
6094
|
|
|
6043
|
-
// node_modules
|
|
6095
|
+
// node_modules/yaml/dist/stringify/stringifyString.js
|
|
6044
6096
|
var require_stringifyString = __commonJS((exports) => {
|
|
6045
6097
|
var Scalar = require_Scalar();
|
|
6046
6098
|
var foldFlowLines = require_foldFlowLines();
|
|
@@ -6338,7 +6390,7 @@ ${indent}`);
|
|
|
6338
6390
|
exports.stringifyString = stringifyString;
|
|
6339
6391
|
});
|
|
6340
6392
|
|
|
6341
|
-
// node_modules
|
|
6393
|
+
// node_modules/yaml/dist/stringify/stringify.js
|
|
6342
6394
|
var require_stringify = __commonJS((exports) => {
|
|
6343
6395
|
var anchors = require_anchors();
|
|
6344
6396
|
var identity = require_identity();
|
|
@@ -6459,7 +6511,7 @@ ${ctx.indent}${str}`;
|
|
|
6459
6511
|
exports.stringify = stringify;
|
|
6460
6512
|
});
|
|
6461
6513
|
|
|
6462
|
-
// node_modules
|
|
6514
|
+
// node_modules/yaml/dist/stringify/stringifyPair.js
|
|
6463
6515
|
var require_stringifyPair = __commonJS((exports) => {
|
|
6464
6516
|
var identity = require_identity();
|
|
6465
6517
|
var Scalar = require_Scalar();
|
|
@@ -6595,7 +6647,7 @@ ${ctx.indent}`;
|
|
|
6595
6647
|
exports.stringifyPair = stringifyPair;
|
|
6596
6648
|
});
|
|
6597
6649
|
|
|
6598
|
-
// node_modules
|
|
6650
|
+
// node_modules/yaml/dist/log.js
|
|
6599
6651
|
var require_log = __commonJS((exports) => {
|
|
6600
6652
|
var node_process = __require("process");
|
|
6601
6653
|
function debug(logLevel, ...messages) {
|
|
@@ -6614,7 +6666,7 @@ var require_log = __commonJS((exports) => {
|
|
|
6614
6666
|
exports.warn = warn;
|
|
6615
6667
|
});
|
|
6616
6668
|
|
|
6617
|
-
// node_modules
|
|
6669
|
+
// node_modules/yaml/dist/schema/yaml-1.1/merge.js
|
|
6618
6670
|
var require_merge = __commonJS((exports) => {
|
|
6619
6671
|
var identity = require_identity();
|
|
6620
6672
|
var Scalar = require_Scalar();
|
|
@@ -6668,7 +6720,7 @@ var require_merge = __commonJS((exports) => {
|
|
|
6668
6720
|
exports.merge = merge;
|
|
6669
6721
|
});
|
|
6670
6722
|
|
|
6671
|
-
// node_modules
|
|
6723
|
+
// node_modules/yaml/dist/nodes/addPairToJSMap.js
|
|
6672
6724
|
var require_addPairToJSMap = __commonJS((exports) => {
|
|
6673
6725
|
var log = require_log();
|
|
6674
6726
|
var merge = require_merge();
|
|
@@ -6729,7 +6781,7 @@ var require_addPairToJSMap = __commonJS((exports) => {
|
|
|
6729
6781
|
exports.addPairToJSMap = addPairToJSMap;
|
|
6730
6782
|
});
|
|
6731
6783
|
|
|
6732
|
-
// node_modules
|
|
6784
|
+
// node_modules/yaml/dist/nodes/Pair.js
|
|
6733
6785
|
var require_Pair = __commonJS((exports) => {
|
|
6734
6786
|
var createNode = require_createNode();
|
|
6735
6787
|
var stringifyPair = require_stringifyPair();
|
|
@@ -6767,7 +6819,7 @@ var require_Pair = __commonJS((exports) => {
|
|
|
6767
6819
|
exports.createPair = createPair;
|
|
6768
6820
|
});
|
|
6769
6821
|
|
|
6770
|
-
// node_modules
|
|
6822
|
+
// node_modules/yaml/dist/stringify/stringifyCollection.js
|
|
6771
6823
|
var require_stringifyCollection = __commonJS((exports) => {
|
|
6772
6824
|
var identity = require_identity();
|
|
6773
6825
|
var stringify = require_stringify();
|
|
@@ -6919,7 +6971,7 @@ ${indent}${end}`;
|
|
|
6919
6971
|
exports.stringifyCollection = stringifyCollection;
|
|
6920
6972
|
});
|
|
6921
6973
|
|
|
6922
|
-
// node_modules
|
|
6974
|
+
// node_modules/yaml/dist/nodes/YAMLMap.js
|
|
6923
6975
|
var require_YAMLMap = __commonJS((exports) => {
|
|
6924
6976
|
var stringifyCollection = require_stringifyCollection();
|
|
6925
6977
|
var addPairToJSMap = require_addPairToJSMap();
|
|
@@ -7046,7 +7098,7 @@ var require_YAMLMap = __commonJS((exports) => {
|
|
|
7046
7098
|
exports.findPair = findPair;
|
|
7047
7099
|
});
|
|
7048
7100
|
|
|
7049
|
-
// node_modules
|
|
7101
|
+
// node_modules/yaml/dist/schema/common/map.js
|
|
7050
7102
|
var require_map = __commonJS((exports) => {
|
|
7051
7103
|
var identity = require_identity();
|
|
7052
7104
|
var YAMLMap = require_YAMLMap();
|
|
@@ -7065,7 +7117,7 @@ var require_map = __commonJS((exports) => {
|
|
|
7065
7117
|
exports.map = map;
|
|
7066
7118
|
});
|
|
7067
7119
|
|
|
7068
|
-
// node_modules
|
|
7120
|
+
// node_modules/yaml/dist/nodes/YAMLSeq.js
|
|
7069
7121
|
var require_YAMLSeq = __commonJS((exports) => {
|
|
7070
7122
|
var createNode = require_createNode();
|
|
7071
7123
|
var stringifyCollection = require_stringifyCollection();
|
|
@@ -7158,7 +7210,7 @@ var require_YAMLSeq = __commonJS((exports) => {
|
|
|
7158
7210
|
exports.YAMLSeq = YAMLSeq;
|
|
7159
7211
|
});
|
|
7160
7212
|
|
|
7161
|
-
// node_modules
|
|
7213
|
+
// node_modules/yaml/dist/schema/common/seq.js
|
|
7162
7214
|
var require_seq = __commonJS((exports) => {
|
|
7163
7215
|
var identity = require_identity();
|
|
7164
7216
|
var YAMLSeq = require_YAMLSeq();
|
|
@@ -7177,7 +7229,7 @@ var require_seq = __commonJS((exports) => {
|
|
|
7177
7229
|
exports.seq = seq;
|
|
7178
7230
|
});
|
|
7179
7231
|
|
|
7180
|
-
// node_modules
|
|
7232
|
+
// node_modules/yaml/dist/schema/common/string.js
|
|
7181
7233
|
var require_string = __commonJS((exports) => {
|
|
7182
7234
|
var stringifyString = require_stringifyString();
|
|
7183
7235
|
var string = {
|
|
@@ -7193,7 +7245,7 @@ var require_string = __commonJS((exports) => {
|
|
|
7193
7245
|
exports.string = string;
|
|
7194
7246
|
});
|
|
7195
7247
|
|
|
7196
|
-
// node_modules
|
|
7248
|
+
// node_modules/yaml/dist/schema/common/null.js
|
|
7197
7249
|
var require_null = __commonJS((exports) => {
|
|
7198
7250
|
var Scalar = require_Scalar();
|
|
7199
7251
|
var nullTag = {
|
|
@@ -7208,7 +7260,7 @@ var require_null = __commonJS((exports) => {
|
|
|
7208
7260
|
exports.nullTag = nullTag;
|
|
7209
7261
|
});
|
|
7210
7262
|
|
|
7211
|
-
// node_modules
|
|
7263
|
+
// node_modules/yaml/dist/schema/core/bool.js
|
|
7212
7264
|
var require_bool = __commonJS((exports) => {
|
|
7213
7265
|
var Scalar = require_Scalar();
|
|
7214
7266
|
var boolTag = {
|
|
@@ -7229,7 +7281,7 @@ var require_bool = __commonJS((exports) => {
|
|
|
7229
7281
|
exports.boolTag = boolTag;
|
|
7230
7282
|
});
|
|
7231
7283
|
|
|
7232
|
-
// node_modules
|
|
7284
|
+
// node_modules/yaml/dist/stringify/stringifyNumber.js
|
|
7233
7285
|
var require_stringifyNumber = __commonJS((exports) => {
|
|
7234
7286
|
function stringifyNumber({ format, minFractionDigits, tag, value }) {
|
|
7235
7287
|
if (typeof value === "bigint")
|
|
@@ -7253,7 +7305,7 @@ var require_stringifyNumber = __commonJS((exports) => {
|
|
|
7253
7305
|
exports.stringifyNumber = stringifyNumber;
|
|
7254
7306
|
});
|
|
7255
7307
|
|
|
7256
|
-
// node_modules
|
|
7308
|
+
// node_modules/yaml/dist/schema/core/float.js
|
|
7257
7309
|
var require_float = __commonJS((exports) => {
|
|
7258
7310
|
var Scalar = require_Scalar();
|
|
7259
7311
|
var stringifyNumber = require_stringifyNumber();
|
|
@@ -7296,7 +7348,7 @@ var require_float = __commonJS((exports) => {
|
|
|
7296
7348
|
exports.floatNaN = floatNaN;
|
|
7297
7349
|
});
|
|
7298
7350
|
|
|
7299
|
-
// node_modules
|
|
7351
|
+
// node_modules/yaml/dist/schema/core/int.js
|
|
7300
7352
|
var require_int = __commonJS((exports) => {
|
|
7301
7353
|
var stringifyNumber = require_stringifyNumber();
|
|
7302
7354
|
var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
|
|
@@ -7338,7 +7390,7 @@ var require_int = __commonJS((exports) => {
|
|
|
7338
7390
|
exports.intOct = intOct;
|
|
7339
7391
|
});
|
|
7340
7392
|
|
|
7341
|
-
// node_modules
|
|
7393
|
+
// node_modules/yaml/dist/schema/core/schema.js
|
|
7342
7394
|
var require_schema = __commonJS((exports) => {
|
|
7343
7395
|
var map = require_map();
|
|
7344
7396
|
var _null = require_null();
|
|
@@ -7363,7 +7415,7 @@ var require_schema = __commonJS((exports) => {
|
|
|
7363
7415
|
exports.schema = schema;
|
|
7364
7416
|
});
|
|
7365
7417
|
|
|
7366
|
-
// node_modules
|
|
7418
|
+
// node_modules/yaml/dist/schema/json/schema.js
|
|
7367
7419
|
var require_schema2 = __commonJS((exports) => {
|
|
7368
7420
|
var Scalar = require_Scalar();
|
|
7369
7421
|
var map = require_map();
|
|
@@ -7427,7 +7479,7 @@ var require_schema2 = __commonJS((exports) => {
|
|
|
7427
7479
|
exports.schema = schema;
|
|
7428
7480
|
});
|
|
7429
7481
|
|
|
7430
|
-
// node_modules
|
|
7482
|
+
// node_modules/yaml/dist/schema/yaml-1.1/binary.js
|
|
7431
7483
|
var require_binary = __commonJS((exports) => {
|
|
7432
7484
|
var node_buffer = __require("buffer");
|
|
7433
7485
|
var Scalar = require_Scalar();
|
|
@@ -7482,7 +7534,7 @@ var require_binary = __commonJS((exports) => {
|
|
|
7482
7534
|
exports.binary = binary;
|
|
7483
7535
|
});
|
|
7484
7536
|
|
|
7485
|
-
// node_modules
|
|
7537
|
+
// node_modules/yaml/dist/schema/yaml-1.1/pairs.js
|
|
7486
7538
|
var require_pairs = __commonJS((exports) => {
|
|
7487
7539
|
var identity = require_identity();
|
|
7488
7540
|
var Pair = require_Pair();
|
|
@@ -7557,7 +7609,7 @@ ${cn.comment}` : item.comment;
|
|
|
7557
7609
|
exports.resolvePairs = resolvePairs;
|
|
7558
7610
|
});
|
|
7559
7611
|
|
|
7560
|
-
// node_modules
|
|
7612
|
+
// node_modules/yaml/dist/schema/yaml-1.1/omap.js
|
|
7561
7613
|
var require_omap = __commonJS((exports) => {
|
|
7562
7614
|
var identity = require_identity();
|
|
7563
7615
|
var toJS = require_toJS();
|
|
@@ -7629,7 +7681,7 @@ var require_omap = __commonJS((exports) => {
|
|
|
7629
7681
|
exports.omap = omap;
|
|
7630
7682
|
});
|
|
7631
7683
|
|
|
7632
|
-
// node_modules
|
|
7684
|
+
// node_modules/yaml/dist/schema/yaml-1.1/bool.js
|
|
7633
7685
|
var require_bool2 = __commonJS((exports) => {
|
|
7634
7686
|
var Scalar = require_Scalar();
|
|
7635
7687
|
function boolStringify({ value, source }, ctx) {
|
|
@@ -7658,7 +7710,7 @@ var require_bool2 = __commonJS((exports) => {
|
|
|
7658
7710
|
exports.trueTag = trueTag;
|
|
7659
7711
|
});
|
|
7660
7712
|
|
|
7661
|
-
// node_modules
|
|
7713
|
+
// node_modules/yaml/dist/schema/yaml-1.1/float.js
|
|
7662
7714
|
var require_float2 = __commonJS((exports) => {
|
|
7663
7715
|
var Scalar = require_Scalar();
|
|
7664
7716
|
var stringifyNumber = require_stringifyNumber();
|
|
@@ -7704,7 +7756,7 @@ var require_float2 = __commonJS((exports) => {
|
|
|
7704
7756
|
exports.floatNaN = floatNaN;
|
|
7705
7757
|
});
|
|
7706
7758
|
|
|
7707
|
-
// node_modules
|
|
7759
|
+
// node_modules/yaml/dist/schema/yaml-1.1/int.js
|
|
7708
7760
|
var require_int2 = __commonJS((exports) => {
|
|
7709
7761
|
var stringifyNumber = require_stringifyNumber();
|
|
7710
7762
|
var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
|
|
@@ -7780,7 +7832,7 @@ var require_int2 = __commonJS((exports) => {
|
|
|
7780
7832
|
exports.intOct = intOct;
|
|
7781
7833
|
});
|
|
7782
7834
|
|
|
7783
|
-
// node_modules
|
|
7835
|
+
// node_modules/yaml/dist/schema/yaml-1.1/set.js
|
|
7784
7836
|
var require_set = __commonJS((exports) => {
|
|
7785
7837
|
var identity = require_identity();
|
|
7786
7838
|
var Pair = require_Pair();
|
|
@@ -7863,7 +7915,7 @@ var require_set = __commonJS((exports) => {
|
|
|
7863
7915
|
exports.set = set;
|
|
7864
7916
|
});
|
|
7865
7917
|
|
|
7866
|
-
// node_modules
|
|
7918
|
+
// node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
|
|
7867
7919
|
var require_timestamp = __commonJS((exports) => {
|
|
7868
7920
|
var stringifyNumber = require_stringifyNumber();
|
|
7869
7921
|
function parseSexagesimal(str, asBigInt) {
|
|
@@ -7945,7 +7997,7 @@ var require_timestamp = __commonJS((exports) => {
|
|
|
7945
7997
|
exports.timestamp = timestamp;
|
|
7946
7998
|
});
|
|
7947
7999
|
|
|
7948
|
-
// node_modules
|
|
8000
|
+
// node_modules/yaml/dist/schema/yaml-1.1/schema.js
|
|
7949
8001
|
var require_schema3 = __commonJS((exports) => {
|
|
7950
8002
|
var map = require_map();
|
|
7951
8003
|
var _null = require_null();
|
|
@@ -7986,7 +8038,7 @@ var require_schema3 = __commonJS((exports) => {
|
|
|
7986
8038
|
exports.schema = schema;
|
|
7987
8039
|
});
|
|
7988
8040
|
|
|
7989
|
-
// node_modules
|
|
8041
|
+
// node_modules/yaml/dist/schema/tags.js
|
|
7990
8042
|
var require_tags = __commonJS((exports) => {
|
|
7991
8043
|
var map = require_map();
|
|
7992
8044
|
var _null = require_null();
|
|
@@ -8077,7 +8129,7 @@ var require_tags = __commonJS((exports) => {
|
|
|
8077
8129
|
exports.getTags = getTags;
|
|
8078
8130
|
});
|
|
8079
8131
|
|
|
8080
|
-
// node_modules
|
|
8132
|
+
// node_modules/yaml/dist/schema/Schema.js
|
|
8081
8133
|
var require_Schema = __commonJS((exports) => {
|
|
8082
8134
|
var identity = require_identity();
|
|
8083
8135
|
var map = require_map();
|
|
@@ -8107,7 +8159,7 @@ var require_Schema = __commonJS((exports) => {
|
|
|
8107
8159
|
exports.Schema = Schema;
|
|
8108
8160
|
});
|
|
8109
8161
|
|
|
8110
|
-
// node_modules
|
|
8162
|
+
// node_modules/yaml/dist/stringify/stringifyDocument.js
|
|
8111
8163
|
var require_stringifyDocument = __commonJS((exports) => {
|
|
8112
8164
|
var identity = require_identity();
|
|
8113
8165
|
var stringify = require_stringify();
|
|
@@ -8187,7 +8239,7 @@ var require_stringifyDocument = __commonJS((exports) => {
|
|
|
8187
8239
|
exports.stringifyDocument = stringifyDocument;
|
|
8188
8240
|
});
|
|
8189
8241
|
|
|
8190
|
-
// node_modules
|
|
8242
|
+
// node_modules/yaml/dist/doc/Document.js
|
|
8191
8243
|
var require_Document = __commonJS((exports) => {
|
|
8192
8244
|
var Alias = require_Alias();
|
|
8193
8245
|
var Collection = require_Collection();
|
|
@@ -8422,7 +8474,7 @@ var require_Document = __commonJS((exports) => {
|
|
|
8422
8474
|
exports.Document = Document;
|
|
8423
8475
|
});
|
|
8424
8476
|
|
|
8425
|
-
// node_modules
|
|
8477
|
+
// node_modules/yaml/dist/errors.js
|
|
8426
8478
|
var require_errors = __commonJS((exports) => {
|
|
8427
8479
|
class YAMLError extends Error {
|
|
8428
8480
|
constructor(name, pos, code, message) {
|
|
@@ -8487,7 +8539,7 @@ ${pointer}
|
|
|
8487
8539
|
exports.prettifyError = prettifyError;
|
|
8488
8540
|
});
|
|
8489
8541
|
|
|
8490
|
-
// node_modules
|
|
8542
|
+
// node_modules/yaml/dist/compose/resolve-props.js
|
|
8491
8543
|
var require_resolve_props = __commonJS((exports) => {
|
|
8492
8544
|
function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
|
|
8493
8545
|
let spaceBefore = false;
|
|
@@ -8617,7 +8669,7 @@ var require_resolve_props = __commonJS((exports) => {
|
|
|
8617
8669
|
exports.resolveProps = resolveProps;
|
|
8618
8670
|
});
|
|
8619
8671
|
|
|
8620
|
-
// node_modules
|
|
8672
|
+
// node_modules/yaml/dist/compose/util-contains-newline.js
|
|
8621
8673
|
var require_util_contains_newline = __commonJS((exports) => {
|
|
8622
8674
|
function containsNewline(key) {
|
|
8623
8675
|
if (!key)
|
|
@@ -8657,7 +8709,7 @@ var require_util_contains_newline = __commonJS((exports) => {
|
|
|
8657
8709
|
exports.containsNewline = containsNewline;
|
|
8658
8710
|
});
|
|
8659
8711
|
|
|
8660
|
-
// node_modules
|
|
8712
|
+
// node_modules/yaml/dist/compose/util-flow-indent-check.js
|
|
8661
8713
|
var require_util_flow_indent_check = __commonJS((exports) => {
|
|
8662
8714
|
var utilContainsNewline = require_util_contains_newline();
|
|
8663
8715
|
function flowIndentCheck(indent, fc, onError) {
|
|
@@ -8672,7 +8724,7 @@ var require_util_flow_indent_check = __commonJS((exports) => {
|
|
|
8672
8724
|
exports.flowIndentCheck = flowIndentCheck;
|
|
8673
8725
|
});
|
|
8674
8726
|
|
|
8675
|
-
// node_modules
|
|
8727
|
+
// node_modules/yaml/dist/compose/util-map-includes.js
|
|
8676
8728
|
var require_util_map_includes = __commonJS((exports) => {
|
|
8677
8729
|
var identity = require_identity();
|
|
8678
8730
|
function mapIncludes(ctx, items, search) {
|
|
@@ -8685,7 +8737,7 @@ var require_util_map_includes = __commonJS((exports) => {
|
|
|
8685
8737
|
exports.mapIncludes = mapIncludes;
|
|
8686
8738
|
});
|
|
8687
8739
|
|
|
8688
|
-
// node_modules
|
|
8740
|
+
// node_modules/yaml/dist/compose/resolve-block-map.js
|
|
8689
8741
|
var require_resolve_block_map = __commonJS((exports) => {
|
|
8690
8742
|
var Pair = require_Pair();
|
|
8691
8743
|
var YAMLMap = require_YAMLMap();
|
|
@@ -8792,7 +8844,7 @@ var require_resolve_block_map = __commonJS((exports) => {
|
|
|
8792
8844
|
exports.resolveBlockMap = resolveBlockMap;
|
|
8793
8845
|
});
|
|
8794
8846
|
|
|
8795
|
-
// node_modules
|
|
8847
|
+
// node_modules/yaml/dist/compose/resolve-block-seq.js
|
|
8796
8848
|
var require_resolve_block_seq = __commonJS((exports) => {
|
|
8797
8849
|
var YAMLSeq = require_YAMLSeq();
|
|
8798
8850
|
var resolveProps = require_resolve_props();
|
|
@@ -8840,7 +8892,7 @@ var require_resolve_block_seq = __commonJS((exports) => {
|
|
|
8840
8892
|
exports.resolveBlockSeq = resolveBlockSeq;
|
|
8841
8893
|
});
|
|
8842
8894
|
|
|
8843
|
-
// node_modules
|
|
8895
|
+
// node_modules/yaml/dist/compose/resolve-end.js
|
|
8844
8896
|
var require_resolve_end = __commonJS((exports) => {
|
|
8845
8897
|
function resolveEnd(end, offset, reqSpace, onError) {
|
|
8846
8898
|
let comment = "";
|
|
@@ -8880,7 +8932,7 @@ var require_resolve_end = __commonJS((exports) => {
|
|
|
8880
8932
|
exports.resolveEnd = resolveEnd;
|
|
8881
8933
|
});
|
|
8882
8934
|
|
|
8883
|
-
// node_modules
|
|
8935
|
+
// node_modules/yaml/dist/compose/resolve-flow-collection.js
|
|
8884
8936
|
var require_resolve_flow_collection = __commonJS((exports) => {
|
|
8885
8937
|
var identity = require_identity();
|
|
8886
8938
|
var Pair = require_Pair();
|
|
@@ -9071,7 +9123,7 @@ var require_resolve_flow_collection = __commonJS((exports) => {
|
|
|
9071
9123
|
exports.resolveFlowCollection = resolveFlowCollection;
|
|
9072
9124
|
});
|
|
9073
9125
|
|
|
9074
|
-
// node_modules
|
|
9126
|
+
// node_modules/yaml/dist/compose/compose-collection.js
|
|
9075
9127
|
var require_compose_collection = __commonJS((exports) => {
|
|
9076
9128
|
var identity = require_identity();
|
|
9077
9129
|
var Scalar = require_Scalar();
|
|
@@ -9133,7 +9185,7 @@ var require_compose_collection = __commonJS((exports) => {
|
|
|
9133
9185
|
exports.composeCollection = composeCollection;
|
|
9134
9186
|
});
|
|
9135
9187
|
|
|
9136
|
-
// node_modules
|
|
9188
|
+
// node_modules/yaml/dist/compose/resolve-block-scalar.js
|
|
9137
9189
|
var require_resolve_block_scalar = __commonJS((exports) => {
|
|
9138
9190
|
var Scalar = require_Scalar();
|
|
9139
9191
|
function resolveBlockScalar(ctx, scalar, onError) {
|
|
@@ -9326,7 +9378,7 @@ var require_resolve_block_scalar = __commonJS((exports) => {
|
|
|
9326
9378
|
exports.resolveBlockScalar = resolveBlockScalar;
|
|
9327
9379
|
});
|
|
9328
9380
|
|
|
9329
|
-
// node_modules
|
|
9381
|
+
// node_modules/yaml/dist/compose/resolve-flow-scalar.js
|
|
9330
9382
|
var require_resolve_flow_scalar = __commonJS((exports) => {
|
|
9331
9383
|
var Scalar = require_Scalar();
|
|
9332
9384
|
var resolveEnd = require_resolve_end();
|
|
@@ -9542,7 +9594,7 @@ var require_resolve_flow_scalar = __commonJS((exports) => {
|
|
|
9542
9594
|
exports.resolveFlowScalar = resolveFlowScalar;
|
|
9543
9595
|
});
|
|
9544
9596
|
|
|
9545
|
-
// node_modules
|
|
9597
|
+
// node_modules/yaml/dist/compose/compose-scalar.js
|
|
9546
9598
|
var require_compose_scalar = __commonJS((exports) => {
|
|
9547
9599
|
var identity = require_identity();
|
|
9548
9600
|
var Scalar = require_Scalar();
|
|
@@ -9620,7 +9672,7 @@ var require_compose_scalar = __commonJS((exports) => {
|
|
|
9620
9672
|
exports.composeScalar = composeScalar;
|
|
9621
9673
|
});
|
|
9622
9674
|
|
|
9623
|
-
// node_modules
|
|
9675
|
+
// node_modules/yaml/dist/compose/util-empty-scalar-position.js
|
|
9624
9676
|
var require_util_empty_scalar_position = __commonJS((exports) => {
|
|
9625
9677
|
function emptyScalarPosition(offset, before, pos) {
|
|
9626
9678
|
if (before) {
|
|
@@ -9647,7 +9699,7 @@ var require_util_empty_scalar_position = __commonJS((exports) => {
|
|
|
9647
9699
|
exports.emptyScalarPosition = emptyScalarPosition;
|
|
9648
9700
|
});
|
|
9649
9701
|
|
|
9650
|
-
// node_modules
|
|
9702
|
+
// node_modules/yaml/dist/compose/compose-node.js
|
|
9651
9703
|
var require_compose_node = __commonJS((exports) => {
|
|
9652
9704
|
var Alias = require_Alias();
|
|
9653
9705
|
var identity = require_identity();
|
|
@@ -9750,7 +9802,7 @@ var require_compose_node = __commonJS((exports) => {
|
|
|
9750
9802
|
exports.composeNode = composeNode;
|
|
9751
9803
|
});
|
|
9752
9804
|
|
|
9753
|
-
// node_modules
|
|
9805
|
+
// node_modules/yaml/dist/compose/compose-doc.js
|
|
9754
9806
|
var require_compose_doc = __commonJS((exports) => {
|
|
9755
9807
|
var Document = require_Document();
|
|
9756
9808
|
var composeNode = require_compose_node();
|
|
@@ -9790,7 +9842,7 @@ var require_compose_doc = __commonJS((exports) => {
|
|
|
9790
9842
|
exports.composeDoc = composeDoc;
|
|
9791
9843
|
});
|
|
9792
9844
|
|
|
9793
|
-
// node_modules
|
|
9845
|
+
// node_modules/yaml/dist/compose/composer.js
|
|
9794
9846
|
var require_composer = __commonJS((exports) => {
|
|
9795
9847
|
var node_process = __require("process");
|
|
9796
9848
|
var directives = require_directives();
|
|
@@ -9979,7 +10031,7 @@ ${end.comment}` : end.comment;
|
|
|
9979
10031
|
exports.Composer = Composer;
|
|
9980
10032
|
});
|
|
9981
10033
|
|
|
9982
|
-
// node_modules
|
|
10034
|
+
// node_modules/yaml/dist/parse/cst-scalar.js
|
|
9983
10035
|
var require_cst_scalar = __commonJS((exports) => {
|
|
9984
10036
|
var resolveBlockScalar = require_resolve_block_scalar();
|
|
9985
10037
|
var resolveFlowScalar = require_resolve_flow_scalar();
|
|
@@ -10169,7 +10221,7 @@ var require_cst_scalar = __commonJS((exports) => {
|
|
|
10169
10221
|
exports.setScalarValue = setScalarValue;
|
|
10170
10222
|
});
|
|
10171
10223
|
|
|
10172
|
-
// node_modules
|
|
10224
|
+
// node_modules/yaml/dist/parse/cst-stringify.js
|
|
10173
10225
|
var require_cst_stringify = __commonJS((exports) => {
|
|
10174
10226
|
var stringify = (cst) => ("type" in cst) ? stringifyToken(cst) : stringifyItem(cst);
|
|
10175
10227
|
function stringifyToken(token) {
|
|
@@ -10227,7 +10279,7 @@ var require_cst_stringify = __commonJS((exports) => {
|
|
|
10227
10279
|
exports.stringify = stringify;
|
|
10228
10280
|
});
|
|
10229
10281
|
|
|
10230
|
-
// node_modules
|
|
10282
|
+
// node_modules/yaml/dist/parse/cst-visit.js
|
|
10231
10283
|
var require_cst_visit = __commonJS((exports) => {
|
|
10232
10284
|
var BREAK = Symbol("break visit");
|
|
10233
10285
|
var SKIP = Symbol("skip children");
|
|
@@ -10286,7 +10338,7 @@ var require_cst_visit = __commonJS((exports) => {
|
|
|
10286
10338
|
exports.visit = visit;
|
|
10287
10339
|
});
|
|
10288
10340
|
|
|
10289
|
-
// node_modules
|
|
10341
|
+
// node_modules/yaml/dist/parse/cst.js
|
|
10290
10342
|
var require_cst = __commonJS((exports) => {
|
|
10291
10343
|
var cstScalar = require_cst_scalar();
|
|
10292
10344
|
var cstStringify = require_cst_stringify();
|
|
@@ -10387,7 +10439,7 @@ var require_cst = __commonJS((exports) => {
|
|
|
10387
10439
|
exports.tokenType = tokenType;
|
|
10388
10440
|
});
|
|
10389
10441
|
|
|
10390
|
-
// node_modules
|
|
10442
|
+
// node_modules/yaml/dist/parse/lexer.js
|
|
10391
10443
|
var require_lexer = __commonJS((exports) => {
|
|
10392
10444
|
var cst = require_cst();
|
|
10393
10445
|
function isEmpty(ch) {
|
|
@@ -10973,7 +11025,7 @@ var require_lexer = __commonJS((exports) => {
|
|
|
10973
11025
|
exports.Lexer = Lexer;
|
|
10974
11026
|
});
|
|
10975
11027
|
|
|
10976
|
-
// node_modules
|
|
11028
|
+
// node_modules/yaml/dist/parse/line-counter.js
|
|
10977
11029
|
var require_line_counter = __commonJS((exports) => {
|
|
10978
11030
|
class LineCounter {
|
|
10979
11031
|
constructor() {
|
|
@@ -11001,7 +11053,7 @@ var require_line_counter = __commonJS((exports) => {
|
|
|
11001
11053
|
exports.LineCounter = LineCounter;
|
|
11002
11054
|
});
|
|
11003
11055
|
|
|
11004
|
-
// node_modules
|
|
11056
|
+
// node_modules/yaml/dist/parse/parser.js
|
|
11005
11057
|
var require_parser = __commonJS((exports) => {
|
|
11006
11058
|
var node_process = __require("process");
|
|
11007
11059
|
var cst = require_cst();
|
|
@@ -11850,7 +11902,7 @@ var require_parser = __commonJS((exports) => {
|
|
|
11850
11902
|
exports.Parser = Parser;
|
|
11851
11903
|
});
|
|
11852
11904
|
|
|
11853
|
-
// node_modules
|
|
11905
|
+
// node_modules/yaml/dist/public-api.js
|
|
11854
11906
|
var require_public_api = __commonJS((exports) => {
|
|
11855
11907
|
var composer = require_composer();
|
|
11856
11908
|
var Document = require_Document();
|
|
@@ -11944,7 +11996,7 @@ var require_public_api = __commonJS((exports) => {
|
|
|
11944
11996
|
exports.stringify = stringify;
|
|
11945
11997
|
});
|
|
11946
11998
|
|
|
11947
|
-
// node_modules
|
|
11999
|
+
// node_modules/yaml/dist/index.js
|
|
11948
12000
|
var composer, Document, Schema, errors2, Alias, identity, Pair, Scalar, YAMLMap, YAMLSeq, cst, lexer, lineCounter, parser, publicApi, visit, $Composer, $Document, $Schema, $YAMLError, $YAMLParseError, $YAMLWarning, $Alias, $isAlias, $isCollection, $isDocument, $isMap, $isNode, $isPair, $isScalar, $isSeq, $Pair, $Scalar, $YAMLMap, $YAMLSeq, $Lexer, $LineCounter, $Parser, $parse, $parseAllDocuments, $parseDocument, $stringify, $visit, $visitAsync;
|
|
11949
12001
|
var init_dist = __esm(() => {
|
|
11950
12002
|
composer = require_composer();
|
|
@@ -11993,41 +12045,6 @@ var init_dist = __esm(() => {
|
|
|
11993
12045
|
$visitAsync = visit.visitAsync;
|
|
11994
12046
|
});
|
|
11995
12047
|
|
|
11996
|
-
// src/config/paths.ts
|
|
11997
|
-
import { existsSync } from "node:fs";
|
|
11998
|
-
import { resolve } from "node:path";
|
|
11999
|
-
function home() {
|
|
12000
|
-
return process.env.HOME ?? "/root";
|
|
12001
|
-
}
|
|
12002
|
-
function warnLegacyStateOnce(legacy) {
|
|
12003
|
-
if (_legacyStateWarned)
|
|
12004
|
-
return;
|
|
12005
|
-
_legacyStateWarned = true;
|
|
12006
|
-
process.stderr.write(`[switchroom] DEPRECATED: reading legacy state from ${legacy}. ` + "Run `mv ~/.clerk ~/.switchroom` (and rename any top-level `clerk:` " + "key in switchroom.yaml to `switchroom:`). This back-compat shim is " + `REMOVED in v0.13.0 — no automatic migration exists.
|
|
12007
|
-
`);
|
|
12008
|
-
}
|
|
12009
|
-
function resolveDualPath(pathStr) {
|
|
12010
|
-
const h = home();
|
|
12011
|
-
if (pathStr.startsWith("~/")) {
|
|
12012
|
-
const rest = pathStr.slice(2);
|
|
12013
|
-
const absolute = resolve(h, rest);
|
|
12014
|
-
if (rest.startsWith(`${DEFAULT_STATE_DIR}/`)) {
|
|
12015
|
-
const frag = rest.slice(DEFAULT_STATE_DIR.length + 1);
|
|
12016
|
-
if (!existsSync(absolute)) {
|
|
12017
|
-
const legacy = resolve(h, LEGACY_STATE_DIR, frag);
|
|
12018
|
-
if (existsSync(legacy)) {
|
|
12019
|
-
warnLegacyStateOnce(legacy);
|
|
12020
|
-
return legacy;
|
|
12021
|
-
}
|
|
12022
|
-
}
|
|
12023
|
-
}
|
|
12024
|
-
return absolute;
|
|
12025
|
-
}
|
|
12026
|
-
return resolve(pathStr);
|
|
12027
|
-
}
|
|
12028
|
-
var DEFAULT_STATE_DIR = ".switchroom", LEGACY_STATE_DIR = ".clerk", _legacyStateWarned = false;
|
|
12029
|
-
var init_paths = () => {};
|
|
12030
|
-
|
|
12031
12048
|
// src/config/overlay-schema.ts
|
|
12032
12049
|
var OverlayDocSchema;
|
|
12033
12050
|
var init_overlay_schema = __esm(() => {
|
|
@@ -13182,6 +13199,9 @@ var DEFAULT_RETAIN_MISSION = "Extract user preferences, ongoing projects, recurr
|
|
|
13182
13199
|
// src/agents/reconcile-default-skills.ts
|
|
13183
13200
|
var warnedMissingPool = new Set;
|
|
13184
13201
|
|
|
13202
|
+
// src/setup/host-capabilities.ts
|
|
13203
|
+
init_paths();
|
|
13204
|
+
|
|
13185
13205
|
// src/agents/compose.ts
|
|
13186
13206
|
var AGENT_UID_MIN = 10001;
|
|
13187
13207
|
var AGENT_UID_MAX = 10999;
|