@bastani/atomic 0.9.57 → 0.9.58-alpha.1

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.
Files changed (117) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/CHANGELOG.md +12 -0
  5. package/dist/builtin/subagents/package.json +1 -1
  6. package/dist/builtin/subagents/src/extension/index.bundle.mjs +39 -5
  7. package/dist/builtin/web-access/CHANGELOG.md +12 -0
  8. package/dist/builtin/web-access/index.bundle.mjs +2 -2
  9. package/dist/builtin/web-access/package.json +1 -1
  10. package/dist/builtin/workflows/CHANGELOG.md +42 -0
  11. package/dist/builtin/workflows/package.json +1 -1
  12. package/dist/builtin/workflows/src/extension/index.bundle.mjs +885 -228
  13. package/dist/builtin/workflows/src/extension/local-worker-entry.mjs +933 -175
  14. package/dist/builtin/workflows/src/index.js +630 -162
  15. package/dist/builtin/workflows/src/local-worker-entry.mjs +933 -175
  16. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +1 -1
  17. package/dist/builtin/workflows/src/shared/workflow-infrastructure-error.d.ts +13 -0
  18. package/dist/builtin/workflows/src/workers/public-options.d.ts +10 -0
  19. package/dist/core/agent-session-persistent-custom-messages.d.ts +5 -0
  20. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
  21. package/dist/core/agent-session-persistent-custom-messages.js +16 -0
  22. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
  23. package/dist/core/agent-session-tasks.d.ts.map +1 -1
  24. package/dist/core/agent-session-tasks.js +20 -0
  25. package/dist/core/agent-session-tasks.js.map +1 -1
  26. package/dist/core/settings-defaults.d.ts +4 -0
  27. package/dist/core/settings-defaults.d.ts.map +1 -1
  28. package/dist/core/settings-defaults.js +4 -0
  29. package/dist/core/settings-defaults.js.map +1 -1
  30. package/dist/core/settings-manager-resource-accessors.d.ts +2 -0
  31. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  32. package/dist/core/settings-manager-resource-accessors.js +6 -0
  33. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  34. package/dist/core/settings-schema.d.ts +9 -0
  35. package/dist/core/settings-schema.d.ts.map +1 -1
  36. package/dist/core/settings-schema.js +11 -0
  37. package/dist/core/settings-schema.js.map +1 -1
  38. package/dist/core/settings-types.d.ts +1 -1
  39. package/dist/core/settings-types.d.ts.map +1 -1
  40. package/dist/core/settings-types.js.map +1 -1
  41. package/dist/core/tasks/agent-adapter.d.ts +10 -1
  42. package/dist/core/tasks/agent-adapter.d.ts.map +1 -1
  43. package/dist/core/tasks/agent-adapter.js +20 -0
  44. package/dist/core/tasks/agent-adapter.js.map +1 -1
  45. package/dist/core/tasks/contracts.d.ts +6 -0
  46. package/dist/core/tasks/contracts.d.ts.map +1 -1
  47. package/dist/core/tasks/contracts.js.map +1 -1
  48. package/dist/core/tasks/heartbeat-notice.d.ts +64 -0
  49. package/dist/core/tasks/heartbeat-notice.d.ts.map +1 -0
  50. package/dist/core/tasks/heartbeat-notice.js +98 -0
  51. package/dist/core/tasks/heartbeat-notice.js.map +1 -0
  52. package/dist/core/tasks/heartbeat.d.ts +75 -0
  53. package/dist/core/tasks/heartbeat.d.ts.map +1 -0
  54. package/dist/core/tasks/heartbeat.js +440 -0
  55. package/dist/core/tasks/heartbeat.js.map +1 -0
  56. package/dist/core/tasks/supervisor.d.ts +2 -0
  57. package/dist/core/tasks/supervisor.d.ts.map +1 -1
  58. package/dist/core/tasks/supervisor.js +32 -4
  59. package/dist/core/tasks/supervisor.js.map +1 -1
  60. package/dist/core/tasks/task-view-source.d.ts +72 -0
  61. package/dist/core/tasks/task-view-source.d.ts.map +1 -0
  62. package/dist/core/tasks/task-view-source.js +155 -0
  63. package/dist/core/tasks/task-view-source.js.map +1 -0
  64. package/dist/core/tools/bash-pty-native.d.ts +2 -0
  65. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  66. package/dist/core/tools/bash-pty-native.js +1 -0
  67. package/dist/core/tools/bash-pty-native.js.map +1 -1
  68. package/dist/core/tools/bash.d.ts +3 -0
  69. package/dist/core/tools/bash.d.ts.map +1 -1
  70. package/dist/core/tools/bash.js +20 -2
  71. package/dist/core/tools/bash.js.map +1 -1
  72. package/dist/core/tools/powershell.d.ts +16 -8
  73. package/dist/core/tools/powershell.d.ts.map +1 -1
  74. package/dist/index.d.ts +5 -3
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +4 -2
  77. package/dist/index.js.map +1 -1
  78. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  79. package/dist/modes/interactive/components/chat-session-host-events.js +7 -0
  80. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  81. package/dist/modes/interactive/components/chat-session-host-state.d.ts +3 -0
  82. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  83. package/dist/modes/interactive/components/chat-session-host-state.js +4 -0
  84. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  85. package/dist/modes/interactive/components/chat-session-host-types.d.ts +11 -0
  86. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  87. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  88. package/dist/modes/interactive/components/chat-session-host.d.ts +2 -0
  89. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  90. package/dist/modes/interactive/components/chat-session-host.js +15 -8
  91. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  92. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  93. package/dist/modes/interactive/components/custom-message.js +12 -0
  94. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  95. package/dist/modes/interactive/components/task-detail.d.ts.map +1 -1
  96. package/dist/modes/interactive/components/task-detail.js +5 -0
  97. package/dist/modes/interactive/components/task-detail.js.map +1 -1
  98. package/dist/modes/interactive/components/task-heartbeat-message.d.ts +14 -0
  99. package/dist/modes/interactive/components/task-heartbeat-message.d.ts.map +1 -0
  100. package/dist/modes/interactive/components/task-heartbeat-message.js +76 -0
  101. package/dist/modes/interactive/components/task-heartbeat-message.js.map +1 -0
  102. package/dist/modes/interactive/components/task-inspector.d.ts +6 -3
  103. package/dist/modes/interactive/components/task-inspector.d.ts.map +1 -1
  104. package/dist/modes/interactive/components/task-inspector.js +53 -100
  105. package/dist/modes/interactive/components/task-inspector.js.map +1 -1
  106. package/dist/modes/interactive/skill-command-autocomplete.d.ts +22 -2
  107. package/dist/modes/interactive/skill-command-autocomplete.d.ts.map +1 -1
  108. package/dist/modes/interactive/skill-command-autocomplete.js +28 -9
  109. package/dist/modes/interactive/skill-command-autocomplete.js.map +1 -1
  110. package/docs/background-tasks.md +65 -1
  111. package/docs/settings.md +12 -0
  112. package/docs/subagents.md +2 -0
  113. package/docs/tools.md +2 -1
  114. package/docs/workflows/operations.md +5 -3
  115. package/npm-shrinkwrap.json +32 -32
  116. package/package.json +3 -3
  117. package/schemas/settings.schema.json +24 -0
@@ -78,6 +78,9 @@ declare const MarkdownSettingsSchema: Type.TObject<{
78
78
  declare const WarningSettingsSchema: Type.TObject<{
79
79
  anthropicExtraUsage: Type.TOptional<Type.TBoolean>;
80
80
  }>;
81
+ declare const TaskSettingsSchema: Type.TObject<{
82
+ heartbeatMs: Type.TOptional<Type.TUnion<[Type.TLiteral<0>, Type.TNumber]>>;
83
+ }>;
81
84
  declare const CodemodeModeSchema: Type.TUnion<[Type.TLiteral<"on">, Type.TLiteral<"only">]>;
82
85
  declare const CodemodeSettingsSchema: Type.TObject<{
83
86
  mode: Type.TOptional<Type.TUnion<[Type.TLiteral<"on">, Type.TLiteral<"only">]>>;
@@ -269,6 +272,7 @@ export declare const SettingsSchema: Type.TObject<{
269
272
  }>>;
270
273
  startupTimeoutMs: Type.TOptional<Type.TInteger>;
271
274
  leaseMs: Type.TOptional<Type.TInteger>;
275
+ maxLoadPerCpu: Type.TOptional<Type.TNumber>;
272
276
  }>>;
273
277
  admission: Type.TOptional<Type.TObject<{
274
278
  limits: Type.TOptional<Type.TObject<{
@@ -333,6 +337,9 @@ export declare const SettingsSchema: Type.TObject<{
333
337
  warnings: Type.TOptional<Type.TObject<{
334
338
  anthropicExtraUsage: Type.TOptional<Type.TBoolean>;
335
339
  }>>;
340
+ tasks: Type.TOptional<Type.TObject<{
341
+ heartbeatMs: Type.TOptional<Type.TUnion<[Type.TLiteral<0>, Type.TNumber]>>;
342
+ }>>;
336
343
  httpProxy: Type.TOptional<Type.TString>;
337
344
  httpIdleTimeoutMs: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
338
345
  cacheWarming: Type.TOptional<Type.TUnion<[Type.TLiteral<"off">, Type.TLiteral<"streaming">, Type.TLiteral<"idle">]>>;
@@ -371,6 +378,8 @@ export interface MarkdownSettings extends Static<typeof MarkdownSettingsSchema>
371
378
  }
372
379
  export interface WarningSettings extends Static<typeof WarningSettingsSchema> {
373
380
  }
381
+ export interface TaskSettings extends Static<typeof TaskSettingsSchema> {
382
+ }
374
383
  export type CodemodeMode = Static<typeof CodemodeModeSchema>;
375
384
  export interface CodemodeSettings extends Static<typeof CodemodeSettingsSchema> {
376
385
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-schema.d.ts","sourceRoot":"","sources":["../../src/core/settings-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-schema.d.ts","sourceRoot":"","sources":["../../src/core/settings-schema.ts"],"names":[],"mappings":"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"}
@@ -177,6 +177,12 @@ const MarkdownSettingsSchema = Type.Object({
177
177
  const WarningSettingsSchema = Type.Object({
178
178
  anthropicExtraUsage: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.warnings.anthropicExtraUsage })),
179
179
  });
180
+ const TaskSettingsSchema = Type.Object({
181
+ heartbeatMs: Type.Optional(Type.Union([Type.Literal(0), Type.Number({ minimum: 60_000 })], {
182
+ description: "Default cadence, in milliseconds, of the periodic heartbeat sent to a chat for each of its running background shells and subagents. 0 disables; otherwise at least 60000. A tool call's heartbeatMs overrides it.",
183
+ default: SETTINGS_DEFAULTS.tasks.heartbeatMs,
184
+ })),
185
+ });
180
186
  function codemodeMode(options) {
181
187
  return Type.Union([Type.Literal("on"), Type.Literal("only")], options);
182
188
  }
@@ -260,6 +266,10 @@ const WorkflowsSettingsSchema = Type.Union([
260
266
  maximum: 2_147_483_647,
261
267
  description: "Milliseconds a live worker that has stopped responding keeps its child before the child is replayed elsewhere. Default: 30000.",
262
268
  })),
269
+ maxLoadPerCpu: Type.Optional(Type.Number({
270
+ minimum: 0,
271
+ description: "Load per CPU (1-minute load average / CPU cores) above which pooled stages start one at a time, at most one every 5 seconds. Default: 3. 0 turns it off.",
272
+ })),
263
273
  }, { additionalProperties: false })),
264
274
  admission: Type.Optional(Type.Object({
265
275
  limits: Type.Optional(ResourceLimitsSchema),
@@ -422,6 +432,7 @@ export const SettingsSchema = Type.Object({
422
432
  codemode: Type.Optional(CodemodeSettingsSchema),
423
433
  markdown: Type.Optional(MarkdownSettingsSchema),
424
434
  warnings: Type.Optional(WarningSettingsSchema),
435
+ tasks: Type.Optional(TaskSettingsSchema),
425
436
  httpProxy: Type.Optional(Type.String({
426
437
  description: "Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Atomic-managed HTTP clients. Global only.",
427
438
  })),
@@ -1 +1 @@
1
- {"version":3,"file":"settings-schema.js","sourceRoot":"","sources":["../../src/core/settings-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { ModelThinkingLevelSchema } from \"@bastani/pi-ai/providers/model-schema\";\nimport { type Static, type TSchemaOptions, Type } from \"typebox\";\nimport { SETTINGS_DEFAULTS } from \"./settings-defaults.ts\";\n\nfunction nonNegativeSafeInteger(options: { default?: number; description?: string } = {}) {\n\treturn Type.Integer({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER, ...options });\n}\n\nfunction caseInsensitive(word: string): string {\n\treturn [...word].map((letter) => `[${letter.toLowerCase()}${letter.toUpperCase()}]`).join(\"\");\n}\n\n/** Mirrors `parseHttpIdleTimeoutMs`: milliseconds, `disabled`, or a duration such as `30s`, `5m`, `1h`. */\nconst TIMEOUT_STRING_PATTERN = `^(?:${caseInsensitive(\"disabled\")}|[0-9]+(?:${caseInsensitive(\"ms\")}|[smhSMH])?)$`;\n\nfunction timeoutSetting(options?: TSchemaOptions) {\n\treturn Type.Union([Type.Number({ minimum: 0 }), Type.String({ pattern: TIMEOUT_STRING_PATTERN })], options);\n}\n\nconst CompactionModelOverrideSchema = Type.Object({\n\treserveTokens: Type.Optional(nonNegativeSafeInteger()),\n\tpreserve_recent: Type.Optional(nonNegativeSafeInteger()),\n});\n\nconst CompactionSettingsSchema = Type.Object({\n\tenabled: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.compaction.enabled })),\n\treserveTokens: Type.Optional(\n\t\tnonNegativeSafeInteger({\n\t\t\tdescription: \"Free context tokens below which automatic compaction starts.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.compaction.reserveTokens,\n\t\t}),\n\t),\n\tcompression_ratio: Type.Optional(\n\t\tType.Number({\n\t\t\texclusiveMinimum: 0,\n\t\t\texclusiveMaximum: 1,\n\t\t\tdescription: \"Fraction of compactable transcript lines to keep.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.compaction.compression_ratio,\n\t\t}),\n\t),\n\tpreserve_recent: Type.Optional(\n\t\tnonNegativeSafeInteger({\n\t\t\tdescription: \"Exact number of newest context-visible messages kept outside the compactable region.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.compaction.preserve_recent,\n\t\t}),\n\t),\n\tquery: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Relevance focus for selecting older lines to retain. Defaults to the last user message when omitted.\",\n\t\t}),\n\t),\n\tmodelOverrides: Type.Optional(\n\t\tType.Record(Type.String(), CompactionModelOverrideSchema, {\n\t\t\tdescription: 'Per-model overrides keyed by exact \"provider/modelId\" strings.',\n\t\t}),\n\t),\n});\n\nconst BranchSummarySettingsSchema = Type.Object({\n\treserveTokens: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Tokens reserved when selecting branch history; the provider sizes summary output.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.branchSummary.reserveTokens,\n\t\t}),\n\t),\n\tskipPrompt: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: 'When true, skips the \"Summarize branch?\" prompt and defaults to no summary.',\n\t\t\tdefault: SETTINGS_DEFAULTS.branchSummary.skipPrompt,\n\t\t}),\n\t),\n});\n\nconst SessionSummarySettingsSchema = Type.Object({\n\tenabled: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Generate a one-line resume-picker summary once the agent goes idle.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.sessionSummary.enabled,\n\t\t}),\n\t),\n});\n\nconst ProviderRetrySettingsSchema = Type.Object({\n\ttimeoutMs: Type.Optional(Type.Number({ description: \"SDK or provider request timeout in milliseconds.\" })),\n\tmaxRetries: Type.Optional(Type.Number({ description: \"SDK or provider retry attempts.\" })),\n\tmaxRetryDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Maximum server-requested delay before failing.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.retry.provider.maxRetryDelayMs,\n\t\t}),\n\t),\n});\n\nconst RetrySettingsSchema = Type.Object({\n\tenabled: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.retry.enabled })),\n\tmaxRetries: Type.Optional(Type.Number({ default: SETTINGS_DEFAULTS.retry.maxRetries })),\n\tbaseDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Exponential backoff base delay in milliseconds: 2s, 4s, 8s.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.retry.baseDelayMs,\n\t\t}),\n\t),\n\tmaxAgentDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Maximum agent-level backoff delay in milliseconds. 0 retries immediately.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.retry.maxAgentDelayMs,\n\t\t}),\n\t),\n\tprovider: Type.Optional(ProviderRetrySettingsSchema),\n\tmaxDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Legacy retry delay setting. Use provider.maxRetryDelayMs instead.\",\n\t\t\tdeprecated: true,\n\t\t}),\n\t),\n});\n\nconst TerminalSettingsSchema = Type.Object({\n\tshowImages: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Show images when the terminal supports them.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.showImages,\n\t\t}),\n\t),\n\timageWidthCells: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Preferred inline image width in terminal cells.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.imageWidthCells,\n\t\t}),\n\t),\n\tclearOnShrink: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Clear empty rows when content shrinks.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.clearOnShrink,\n\t\t}),\n\t),\n\tshowTerminalProgress: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Show OSC 9;4 terminal progress indicators.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.showTerminalProgress,\n\t\t}),\n\t),\n\thyperlinks: Type.Optional(\n\t\tType.Union([Type.Boolean(), Type.Literal(\"auto\")], {\n\t\t\tdescription: 'Hyperlink capability override. \"auto\" and invalid values keep terminal detection.',\n\t\t}),\n\t),\n\timages: Type.Optional(\n\t\tType.Union([Type.Literal(\"kitty\"), Type.Literal(\"iterm2\"), Type.Literal(\"auto\"), Type.Literal(false)], {\n\t\t\tdescription: 'Inline-image protocol override. false disables images; \"auto\" keeps terminal detection.',\n\t\t}),\n\t),\n\ttrueColor: Type.Optional(\n\t\tType.Union([Type.Boolean(), Type.Literal(\"auto\")], {\n\t\t\tdescription: 'Truecolor capability override. \"auto\" and invalid values keep terminal detection.',\n\t\t}),\n\t),\n});\n\nconst ImageSettingsSchema = Type.Object({\n\tautoResize: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Resize images to 2000x2000 maximum for better model compatibility.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.images.autoResize,\n\t\t}),\n\t),\n\tblockImages: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"When true, prevents all images from being sent to LLM providers.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.images.blockImages,\n\t\t}),\n\t),\n});\n\nconst SearchSettingsSchema = Type.Object({\n\tcontextBefore: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Number of context lines before each search match.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.search.contextBefore,\n\t\t}),\n\t),\n\tcontextAfter: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Number of context lines after each search match.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.search.contextAfter,\n\t\t}),\n\t),\n});\n\nconst BashInterceptorSettingsSchema = Type.Object({\n\tenabled: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription:\n\t\t\t\t\"When true, block shell commands that have dedicated tools and offer remaining bash tool calls to user_bash extension handlers before local execution.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.bashInterceptor.enabled,\n\t\t}),\n\t),\n});\n\nconst HerdrSettingsSchema = Type.Object({\n\tenabled: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Enable the built-in reporter in an eligible Herdr pane.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.herdr.enabled,\n\t\t}),\n\t),\n});\n\nconst ModelRoutingSettingsSchema = Type.Object(\n\t{\n\t\tallowedProviders: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"When nonempty, only models from these provider IDs are routing candidates.\",\n\t\t\t}),\n\t\t),\n\t\texcludedProviders: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"Provider IDs that are never routing candidates. Applied after allowedProviders.\",\n\t\t\t}),\n\t\t),\n\t\tallowedModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"When nonempty, only models matching these full-ID or glob patterns, as in enabledModels, are routing candidates.\",\n\t\t\t}),\n\t\t),\n\t\texcludedModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"Models matching these full-ID or glob patterns are never routing candidates. Applied after allowedModels.\",\n\t\t\t}),\n\t\t),\n\t},\n\t{\n\t\tdescription:\n\t\t\t'Provider and model filters for the candidates model \"auto\" may route to. Does not affect routerModel.',\n\t},\n);\n\nfunction thinkingBudgetsSettings(options?: TSchemaOptions) {\n\treturn Type.Object(\n\t\t{\n\t\t\tminimal: Type.Optional(Type.Number()),\n\t\t\tlow: Type.Optional(Type.Number()),\n\t\t\tmedium: Type.Optional(Type.Number()),\n\t\t\thigh: Type.Optional(Type.Number()),\n\t\t},\n\t\toptions,\n\t);\n}\n\nconst ThinkingBudgetsSettingsSchema = thinkingBudgetsSettings();\n\nconst MarkdownSettingsSchema = Type.Object({\n\tcodeBlockIndent: Type.Optional(Type.String({ default: SETTINGS_DEFAULTS.markdown.codeBlockIndent })),\n\tmermaid: Type.Optional(\n\t\tType.Union([Type.Literal(\"off\"), Type.Literal(\"final\"), Type.Literal(\"streaming\")], {\n\t\t\tdefault: SETTINGS_DEFAULTS.markdown.mermaid,\n\t\t}),\n\t),\n\tlatex: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Render LaTeX expressions as terminal-friendly Unicode math.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.markdown.latex,\n\t\t}),\n\t),\n});\n\nconst WarningSettingsSchema = Type.Object({\n\tanthropicExtraUsage: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.warnings.anthropicExtraUsage })),\n});\n\nfunction codemodeMode(options?: TSchemaOptions) {\n\treturn Type.Union([Type.Literal(\"on\"), Type.Literal(\"only\")], options);\n}\n\nconst CodemodeModeSchema = codemodeMode();\n\nconst CodemodeSettingsSchema = Type.Object({\n\tmode: Type.Optional(\n\t\tcodemodeMode({\n\t\t\tdescription:\n\t\t\t\t'How codemode presents tools. \"on\" keeps direct tool declarations visible with script-call information; \"only\" hides ordinary direct callable declarations so the model uses scripts. Model-only tools remain directly available.',\n\t\t\tdefault: SETTINGS_DEFAULTS.codemode.mode,\n\t\t}),\n\t),\n\tinlineBudget: Type.Optional(\n\t\tType.Number({\n\t\t\tminimum: 0,\n\t\t\tdescription: \"Estimated tokens available for inline codemode tool declarations.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.codemode.inlineBudget,\n\t\t}),\n\t),\n});\n\nconst PackageSourceSchema = Type.Union(\n\t[\n\t\tType.String({ description: \"Load all resources from the package.\" }),\n\t\tType.Object({\n\t\t\tsource: Type.String(),\n\t\t\tautoload: Type.Optional(\n\t\t\t\tType.Boolean({ description: \"When false, start empty and only apply explicit resource patterns.\" }),\n\t\t\t),\n\t\t\textensions: Type.Optional(Type.Array(Type.String())),\n\t\t\tskills: Type.Optional(Type.Array(Type.String())),\n\t\t\tprompts: Type.Optional(Type.Array(Type.String())),\n\t\t\tthemes: Type.Optional(Type.Array(Type.String())),\n\t\t\tworkflows: Type.Optional(Type.Array(Type.String())),\n\t\t\tmcpServers: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t],\n\t{\n\t\tdescription:\n\t\t\t\"Package source for npm or git packages. Use the string form to load all resources or the object form to filter resources.\",\n\t},\n);\n\nconst StringArraySchema = Type.Array(Type.String());\n\nconst SkillsInputSchema = Type.Union(\n\t[\n\t\tStringArraySchema,\n\t\tType.Object(\n\t\t\t{\n\t\t\t\tenableSkillCommands: Type.Optional(Type.Boolean()),\n\t\t\t\tcustomDirectories: Type.Optional(StringArraySchema),\n\t\t\t},\n\t\t\t{ deprecated: true },\n\t\t),\n\t],\n\t{ description: \"Local skill file paths or directories.\" },\n);\n\nexport const StorageSelectionSchema = Type.Union([\n\tType.Object(\n\t\t{\n\t\t\tpath: Type.Optional(Type.String({ description: \"Database path relative to the Atomic home directory.\" })),\n\t\t\tmemory: Type.Optional(Type.Boolean({ description: \"Explicitly select ephemeral storage.\" })),\n\t\t\tprefix: Type.Optional(Type.String()),\n\t\t},\n\t\t{\n\t\t\tadditionalProperties: false,\n\t\t\tnot: { required: [\"path\", \"memory\"], properties: { path: { minLength: 1 }, memory: { const: true } } },\n\t\t},\n\t),\n\tType.Object(\n\t\t{\n\t\t\tadapter: Type.String({ minLength: 1, description: \"User-installed storage adapter module specifier.\" }),\n\t\t\toptions: Type.Optional(\n\t\t\t\tType.Record(Type.String(), Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Null()])),\n\t\t\t),\n\t\t\tsecrets: Type.Optional(\n\t\t\t\tType.Record(\n\t\t\t\t\tType.String(),\n\t\t\t\t\tType.Union([\n\t\t\t\t\t\tType.Object({ env: Type.String() }, { additionalProperties: false }),\n\t\t\t\t\t\tType.Object({ file: Type.String() }, { additionalProperties: false }),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t),\n\t\t\tprefix: Type.Optional(Type.String()),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n]);\n\nexport const SessionStorageSelectionSchema = Type.Union([\n\tStorageSelectionSchema,\n\tType.Object({ dir: Type.String() }, { additionalProperties: false }),\n]);\n\nconst ResourceLimitsSchema = Type.Object(\n\t{\n\t\tsession: Type.Optional(Type.Integer({ minimum: 1 })),\n\t\tprocess: Type.Optional(Type.Integer({ minimum: 1 })),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst WorkflowsSettingsSchema = Type.Union(\n\t[\n\t\tStringArraySchema,\n\t\tType.Object({\n\t\t\tpaths: Type.Optional(Type.Array(Type.String(), { description: \"Workflow resource paths.\" })),\n\t\t\tjournal: Type.Optional(StorageSelectionSchema),\n\t\t\tlocalWorkers: Type.Optional(\n\t\t\t\tType.Object(\n\t\t\t\t\t{\n\t\t\t\t\t\tcount: Type.Integer({ minimum: 1, description: \"Number of local worker processes.\" }),\n\t\t\t\t\t\tdefinitions: Type.Array(\n\t\t\t\t\t\t\tType.Object({ path: Type.String(), exportName: Type.String() }, { additionalProperties: false }),\n\t\t\t\t\t\t\t{ description: \"Importable child workflow definitions workers may run.\" },\n\t\t\t\t\t\t),\n\t\t\t\t\t\tstartupTimeoutMs: Type.Optional(\n\t\t\t\t\t\t\tType.Integer({\n\t\t\t\t\t\t\t\tminimum: 1,\n\t\t\t\t\t\t\t\tmaximum: 2_147_483_647,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Milliseconds each worker process may take to become ready. Default: 30000, scaled up when workers plus load exceed CPU cores (at most 600000).\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tleaseMs: Type.Optional(\n\t\t\t\t\t\t\tType.Integer({\n\t\t\t\t\t\t\t\tminimum: 2000,\n\t\t\t\t\t\t\t\tmaximum: 2_147_483_647,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Milliseconds a live worker that has stopped responding keeps its child before the child is replayed elsewhere. Default: 30000.\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t),\n\t\t\t),\n\t\t\tadmission: Type.Optional(\n\t\t\t\tType.Object(\n\t\t\t\t\t{\n\t\t\t\t\t\tlimits: Type.Optional(ResourceLimitsSchema),\n\t\t\t\t\t\tuserLimits: Type.Optional(ResourceLimitsSchema),\n\t\t\t\t\t\tuserDatabase: Type.Optional(Type.String()),\n\t\t\t\t\t\thost: Type.Optional(\n\t\t\t\t\t\t\tType.Object(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmaxLoadPerCpu: Type.Optional(Type.Number({ minimum: 0 })),\n\t\t\t\t\t\t\t\t\tminFreeMemoryBytes: Type.Optional(Type.Number({ minimum: 0 })),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t),\n\t\t\t),\n\t\t}),\n\t],\n\t{\n\t\tdescription:\n\t\t\t'Local workflow paths, or an object with \"paths\", \"journal\" storage, \"localWorkers\" and \"admission\" settings.',\n\t},\n);\n\nexport const SettingsSchema = Type.Object(\n\t{\n\t\t$schema: Type.Optional(Type.String({ description: \"JSON Schema reference.\" })),\n\t\tstorage: Type.Optional(StorageSelectionSchema),\n\t\tsessions: Type.Optional(Type.Object({ storage: Type.Optional(SessionStorageSelectionSchema) })),\n\t\tlastChangelogVersion: Type.Optional(Type.String()),\n\t\tfirstRunOnboardingStartedVersion: Type.Optional(\n\t\t\tType.String({ description: \"Managed onboarding state; leave unchanged.\" }),\n\t\t),\n\t\tonboardedVersion: Type.Optional(\n\t\t\tType.String({ description: \"Managed onboarding completion state; leave unchanged.\" }),\n\t\t),\n\t\tdefaultProvider: Type.Optional(Type.String()),\n\t\tdefaultModel: Type.Optional(Type.String()),\n\t\trouterModel: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription:\n\t\t\t\t\t'Inference model for workflow-stage and subagent model: \"auto\" selection only. An exact provider/model selects a registered chat or classifier model; \"auto\" and an empty string use the current chat model.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.routerModel,\n\t\t\t}),\n\t\t),\n\t\tcompactionModel: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription:\n\t\t\t\t\t'Compaction model: \"auto\" or an empty string uses the session model, and an exact provider/model selects a registered chat model, classifier, or compactor.',\n\t\t\t}),\n\t\t),\n\t\tmodelRouting: Type.Optional(ModelRoutingSettingsSchema),\n\t\tdefaultThinkingLevel: Type.Optional(ModelThinkingLevelSchema),\n\t\tmodelThinkingLevels: Type.Optional(\n\t\t\tType.Record(Type.String(), ModelThinkingLevelSchema, {\n\t\t\t\tdescription: 'Per-model default thinking level overrides keyed by \"provider/modelId\".',\n\t\t\t}),\n\t\t),\n\t\tfallbackModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t'Ordered main-chat fallback models, written as \"provider/model\" with an optional thinking-level suffix such as \":high\".',\n\t\t\t}),\n\t\t),\n\t\ttransport: Type.Optional(\n\t\t\tType.Union(\n\t\t\t\t[Type.Literal(\"auto\"), Type.Literal(\"sse\"), Type.Literal(\"websocket\"), Type.Literal(\"websocket-cached\")],\n\t\t\t\t{ default: SETTINGS_DEFAULTS.transport },\n\t\t\t),\n\t\t),\n\t\tsteeringMode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"all\"), Type.Literal(\"one-at-a-time\")], {\n\t\t\t\tdefault: SETTINGS_DEFAULTS.steeringMode,\n\t\t\t}),\n\t\t),\n\t\tfollowUpMode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"all\"), Type.Literal(\"one-at-a-time\")], {\n\t\t\t\tdefault: SETTINGS_DEFAULTS.followUpMode,\n\t\t\t}),\n\t\t),\n\t\ttheme: Type.Optional(Type.String()),\n\t\tenableAnalytics: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Opt in to analytics data sharing. Storage only; Atomic does not transmit analytics.\",\n\t\t\t}),\n\t\t),\n\t\ttrackingId: Type.Optional(\n\t\t\tType.String({ description: \"Analytics tracking identifier, generated when analytics is enabled.\" }),\n\t\t),\n\t\tdeviceId: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Stable installation UUID, generated when authentication first needs it. Global only.\",\n\t\t\t}),\n\t\t),\n\t\tshowCacheMissNotices: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Show cache cost and provider recovery notices.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.showCacheMissNotices,\n\t\t\t}),\n\t\t),\n\t\tcompaction: Type.Optional(CompactionSettingsSchema),\n\t\tbranchSummary: Type.Optional(BranchSummarySettingsSchema),\n\t\tsessionSummary: Type.Optional(SessionSummarySettingsSchema),\n\t\tretry: Type.Optional(RetrySettingsSchema),\n\t\thideThinkingBlock: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.hideThinkingBlock })),\n\t\texternalEditor: Type.Optional(\n\t\t\tType.String({ description: \"Command for Ctrl+G external editor; takes precedence over VISUAL and EDITOR.\" }),\n\t\t),\n\t\tshellPath: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Custom shell path, for example for Cygwin on Windows, with support for leading ~ expansion.\",\n\t\t\t}),\n\t\t),\n\t\tquietStartup: Type.Optional(\n\t\t\tType.Union([Type.Boolean(), Type.Literal(\"header\")], {\n\t\t\t\tdescription: 'When true, hide all startup output. When \"header\", keep only the startup header.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.quietStartup,\n\t\t\t}),\n\t\t),\n\t\tdefaultProjectTrust: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"ask\"), Type.Literal(\"always\"), Type.Literal(\"never\")], {\n\t\t\t\tdescription: \"Global setting only.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.defaultProjectTrust,\n\t\t\t}),\n\t\t),\n\t\tshellCommandPrefix: Type.Optional(\n\t\t\tType.String({ description: \"Prefix prepended to every bash command, for example to enable shell aliases.\" }),\n\t\t),\n\t\tbashInterceptor: Type.Optional(BashInterceptorSettingsSchema),\n\t\tsearch: Type.Optional(SearchSettingsSchema),\n\t\tnpmCommand: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t'Command used for npm package lookup and installation, in argv form such as [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"].',\n\t\t\t}),\n\t\t),\n\t\tselfUpdateCommand: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tminItems: 1,\n\t\t\t\tdescription:\n\t\t\t\t\t'Command `atomic update` runs to update Atomic itself, in argv form such as [\"mise\", \"use\", \"-g\", \"npm:{packageName}@{version}\"]. Placeholders: {packageName}, {version}, {installSpec}. ATOMIC_SELF_UPDATE_COMMAND takes precedence. Global setting only.',\n\t\t\t}),\n\t\t),\n\t\tcollapseChangelog: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Show the condensed changelog after update; use /changelog for the full changelog.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.collapseChangelog,\n\t\t\t}),\n\t\t),\n\t\tenableInstallTelemetry: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Send an anonymous version-adoption ping on eligible interactive launches.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.enableInstallTelemetry,\n\t\t\t}),\n\t\t),\n\t\tpackages: Type.Optional(\n\t\t\tType.Array(PackageSourceSchema, {\n\t\t\t\tdescription: \"npm or git package sources, as strings or objects with resource filtering.\",\n\t\t\t}),\n\t\t),\n\t\textensions: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Local extension file paths or directories.\" }),\n\t\t),\n\t\tskills: Type.Optional(SkillsInputSchema),\n\t\tprompts: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Local prompt template file paths or directories.\" }),\n\t\t),\n\t\tthemes: Type.Optional(Type.Array(Type.String(), { description: \"Local theme file paths or directories.\" })),\n\t\tworkflows: Type.Optional(WorkflowsSettingsSchema),\n\t\tenableSkillCommands: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Register skills as /skill:name commands.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.enableSkillCommands,\n\t\t\t}),\n\t\t),\n\t\tterminal: Type.Optional(TerminalSettingsSchema),\n\t\therdr: Type.Optional(HerdrSettingsSchema),\n\t\timages: Type.Optional(ImageSettingsSchema),\n\t\tenabledModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"Model patterns for cycling, in the same format as the --models CLI flag.\",\n\t\t\t}),\n\t\t),\n\t\tdefaultTools: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"Initial tool selection. Plain names replace the inherited selection; +name and -name entries add or remove tools.\",\n\t\t\t}),\n\t\t),\n\t\tdoubleEscapeAction: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"fork\"), Type.Literal(\"tree\"), Type.Literal(\"none\")], {\n\t\t\t\tdescription: \"Action for double-escape with an empty editor.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.doubleEscapeAction,\n\t\t\t}),\n\t\t),\n\t\ttreeFilterMode: Type.Optional(\n\t\t\tType.Union(\n\t\t\t\t[\n\t\t\t\t\tType.Literal(\"default\"),\n\t\t\t\t\tType.Literal(\"no-tools\"),\n\t\t\t\t\tType.Literal(\"user-only\"),\n\t\t\t\t\tType.Literal(\"labeled-only\"),\n\t\t\t\t\tType.Literal(\"all\"),\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tdescription: \"Default filter when opening /tree.\",\n\t\t\t\t\tdefault: SETTINGS_DEFAULTS.treeFilterMode,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tthinkingBudgets: Type.Optional(\n\t\t\tthinkingBudgetsSettings({\n\t\t\t\tdescription: \"Custom token budgets for thinking levels.\",\n\t\t\t}),\n\t\t),\n\t\teditorPaddingX: Type.Optional(\n\t\t\tType.Number({\n\t\t\t\tdescription: \"Horizontal padding for the input editor (0-3).\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.editorPaddingX,\n\t\t\t}),\n\t\t),\n\t\toutputPad: Type.Optional(\n\t\t\tType.Union([Type.Literal(0), Type.Literal(1)], {\n\t\t\t\tdescription: \"Horizontal padding for transcript content.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.outputPad,\n\t\t\t}),\n\t\t),\n\t\tautocompleteMaxVisible: Type.Optional(\n\t\t\tType.Number({\n\t\t\t\tdescription: \"Maximum visible items in the autocomplete dropdown (3-20).\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.autocompleteMaxVisible,\n\t\t\t}),\n\t\t),\n\t\tshowHardwareCursor: Type.Optional(\n\t\t\tType.Boolean({ description: \"Show the terminal cursor while still positioning it for IME.\" }),\n\t\t),\n\t\tfullscreenScrollbar: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"auto\"), Type.Literal(\"always\"), Type.Literal(\"hidden\")], {\n\t\t\t\tdescription: \"Fullscreen transcript scrollbar visibility.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenScrollbar,\n\t\t\t}),\n\t\t),\n\t\tfullscreenExitOutput: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"transcript\"), Type.Literal(\"resume-hint\")], {\n\t\t\t\tdescription:\n\t\t\t\t\t\"What the terminal keeps when a fullscreen session exits: the final transcript with a resume hint, or only the resume hint.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenExitOutput,\n\t\t\t}),\n\t\t),\n\t\tfullscreenCopyOnSelect: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Copy fullscreen text selections automatically on mouse release.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenCopyOnSelect,\n\t\t\t}),\n\t\t),\n\t\tfullscreenWheelScrollLines: Type.Optional(\n\t\t\tType.Union([Type.Number(), Type.Literal(\"auto\")], {\n\t\t\t\tdescription: \"Lines scrolled per wheel event in fullscreen mode; numeric values are clamped from 1 to 100.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenWheelScrollLines,\n\t\t\t}),\n\t\t),\n\t\tcodemode: Type.Optional(CodemodeSettingsSchema),\n\t\tmarkdown: Type.Optional(MarkdownSettingsSchema),\n\t\twarnings: Type.Optional(WarningSettingsSchema),\n\t\thttpProxy: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Atomic-managed HTTP clients. Global only.\",\n\t\t\t}),\n\t\t),\n\t\thttpIdleTimeoutMs: Type.Optional(\n\t\t\ttimeoutSetting({\n\t\t\t\tdescription:\n\t\t\t\t\t'HTTP idle timeout as milliseconds, a duration such as \"30s\", \"5m\", or \"1h\", or \"disabled\"; 0 or \"disabled\" disables it.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.httpIdleTimeoutMs,\n\t\t\t}),\n\t\t),\n\t\tcacheWarming: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"off\"), Type.Literal(\"streaming\"), Type.Literal(\"idle\")], {\n\t\t\t\tdescription:\n\t\t\t\t\t'Cache-warming profile. \"idle\" also warms between agent runs. Global only because each refresh costs money.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.cacheWarming,\n\t\t\t}),\n\t\t),\n\t\twebsocketConnectTimeoutMs: Type.Optional(\n\t\t\ttimeoutSetting({\n\t\t\t\tdescription:\n\t\t\t\t\t'WebSocket connect or open handshake timeout as milliseconds, a duration such as \"30s\", or \"disabled\"; 0 or \"disabled\" disables it.',\n\t\t\t}),\n\t\t),\n\t\tstreamDeadlineMs: Type.Optional(\n\t\t\ttimeoutSetting({\n\t\t\t\tdescription:\n\t\t\t\t\t'Maximum idle gap between two provider stream events as milliseconds, a duration such as \"30s\", or \"disabled\"; 0 or \"disabled\" disables it.',\n\t\t\t}),\n\t\t),\n\t\tqueueMode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"all\"), Type.Literal(\"one-at-a-time\")], {\n\t\t\t\tdescription: \"Legacy setting migrated to steeringMode.\",\n\t\t\t\tdeprecated: true,\n\t\t\t}),\n\t\t),\n\t\twebsockets: Type.Optional(\n\t\t\tType.Boolean({ description: \"Legacy setting migrated to transport.\", deprecated: true }),\n\t\t),\n\t},\n\t{ additionalProperties: true },\n);\n\ntype SettingsInput = Static<typeof SettingsSchema>;\n\nexport interface CompactionModelOverride extends Static<typeof CompactionModelOverrideSchema> {}\nexport interface CompactionSettings extends Static<typeof CompactionSettingsSchema> {}\nexport interface BranchSummarySettings extends Static<typeof BranchSummarySettingsSchema> {}\nexport interface SessionSummarySettings extends Static<typeof SessionSummarySettingsSchema> {}\nexport interface ProviderRetrySettings extends Static<typeof ProviderRetrySettingsSchema> {}\nexport interface RetrySettings extends Omit<Static<typeof RetrySettingsSchema>, \"maxDelayMs\"> {}\nexport interface TerminalSettings extends Static<typeof TerminalSettingsSchema> {}\nexport interface ImageSettings extends Static<typeof ImageSettingsSchema> {}\nexport interface SearchSettings extends Static<typeof SearchSettingsSchema> {}\nexport interface BashInterceptorSettings extends Static<typeof BashInterceptorSettingsSchema> {}\nexport interface ModelRoutingSettings extends Static<typeof ModelRoutingSettingsSchema> {}\nexport interface ThinkingBudgetsSettings extends Static<typeof ThinkingBudgetsSettingsSchema> {}\nexport type MermaidRenderingMode = NonNullable<Static<typeof MarkdownSettingsSchema>[\"mermaid\"]>;\nexport interface MarkdownSettings extends Static<typeof MarkdownSettingsSchema> {}\nexport interface WarningSettings extends Static<typeof WarningSettingsSchema> {}\nexport type CodemodeMode = Static<typeof CodemodeModeSchema>;\nexport interface CodemodeSettings extends Static<typeof CodemodeSettingsSchema> {}\nexport type DefaultProjectTrust = NonNullable<SettingsInput[\"defaultProjectTrust\"]>;\nexport type QuietStartup = NonNullable<SettingsInput[\"quietStartup\"]>;\nexport type TransportSetting = NonNullable<SettingsInput[\"transport\"]>;\nexport type PackageSource = Static<typeof PackageSourceSchema>;\nexport type FullscreenExitOutput = NonNullable<SettingsInput[\"fullscreenExitOutput\"]>;\nexport type CacheWarmingMode = NonNullable<SettingsInput[\"cacheWarming\"]>;\nexport interface Settings extends Omit<SettingsInput, \"queueMode\" | \"retry\" | \"skills\" | \"websockets\"> {\n\tretry?: RetrySettings;\n\tskills?: string[];\n}\n"]}
1
+ {"version":3,"file":"settings-schema.js","sourceRoot":"","sources":["../../src/core/settings-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { ModelThinkingLevelSchema } from \"@bastani/pi-ai/providers/model-schema\";\nimport { type Static, type TSchemaOptions, Type } from \"typebox\";\nimport { SETTINGS_DEFAULTS } from \"./settings-defaults.ts\";\n\nfunction nonNegativeSafeInteger(options: { default?: number; description?: string } = {}) {\n\treturn Type.Integer({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER, ...options });\n}\n\nfunction caseInsensitive(word: string): string {\n\treturn [...word].map((letter) => `[${letter.toLowerCase()}${letter.toUpperCase()}]`).join(\"\");\n}\n\n/** Mirrors `parseHttpIdleTimeoutMs`: milliseconds, `disabled`, or a duration such as `30s`, `5m`, `1h`. */\nconst TIMEOUT_STRING_PATTERN = `^(?:${caseInsensitive(\"disabled\")}|[0-9]+(?:${caseInsensitive(\"ms\")}|[smhSMH])?)$`;\n\nfunction timeoutSetting(options?: TSchemaOptions) {\n\treturn Type.Union([Type.Number({ minimum: 0 }), Type.String({ pattern: TIMEOUT_STRING_PATTERN })], options);\n}\n\nconst CompactionModelOverrideSchema = Type.Object({\n\treserveTokens: Type.Optional(nonNegativeSafeInteger()),\n\tpreserve_recent: Type.Optional(nonNegativeSafeInteger()),\n});\n\nconst CompactionSettingsSchema = Type.Object({\n\tenabled: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.compaction.enabled })),\n\treserveTokens: Type.Optional(\n\t\tnonNegativeSafeInteger({\n\t\t\tdescription: \"Free context tokens below which automatic compaction starts.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.compaction.reserveTokens,\n\t\t}),\n\t),\n\tcompression_ratio: Type.Optional(\n\t\tType.Number({\n\t\t\texclusiveMinimum: 0,\n\t\t\texclusiveMaximum: 1,\n\t\t\tdescription: \"Fraction of compactable transcript lines to keep.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.compaction.compression_ratio,\n\t\t}),\n\t),\n\tpreserve_recent: Type.Optional(\n\t\tnonNegativeSafeInteger({\n\t\t\tdescription: \"Exact number of newest context-visible messages kept outside the compactable region.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.compaction.preserve_recent,\n\t\t}),\n\t),\n\tquery: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Relevance focus for selecting older lines to retain. Defaults to the last user message when omitted.\",\n\t\t}),\n\t),\n\tmodelOverrides: Type.Optional(\n\t\tType.Record(Type.String(), CompactionModelOverrideSchema, {\n\t\t\tdescription: 'Per-model overrides keyed by exact \"provider/modelId\" strings.',\n\t\t}),\n\t),\n});\n\nconst BranchSummarySettingsSchema = Type.Object({\n\treserveTokens: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Tokens reserved when selecting branch history; the provider sizes summary output.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.branchSummary.reserveTokens,\n\t\t}),\n\t),\n\tskipPrompt: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: 'When true, skips the \"Summarize branch?\" prompt and defaults to no summary.',\n\t\t\tdefault: SETTINGS_DEFAULTS.branchSummary.skipPrompt,\n\t\t}),\n\t),\n});\n\nconst SessionSummarySettingsSchema = Type.Object({\n\tenabled: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Generate a one-line resume-picker summary once the agent goes idle.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.sessionSummary.enabled,\n\t\t}),\n\t),\n});\n\nconst ProviderRetrySettingsSchema = Type.Object({\n\ttimeoutMs: Type.Optional(Type.Number({ description: \"SDK or provider request timeout in milliseconds.\" })),\n\tmaxRetries: Type.Optional(Type.Number({ description: \"SDK or provider retry attempts.\" })),\n\tmaxRetryDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Maximum server-requested delay before failing.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.retry.provider.maxRetryDelayMs,\n\t\t}),\n\t),\n});\n\nconst RetrySettingsSchema = Type.Object({\n\tenabled: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.retry.enabled })),\n\tmaxRetries: Type.Optional(Type.Number({ default: SETTINGS_DEFAULTS.retry.maxRetries })),\n\tbaseDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Exponential backoff base delay in milliseconds: 2s, 4s, 8s.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.retry.baseDelayMs,\n\t\t}),\n\t),\n\tmaxAgentDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Maximum agent-level backoff delay in milliseconds. 0 retries immediately.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.retry.maxAgentDelayMs,\n\t\t}),\n\t),\n\tprovider: Type.Optional(ProviderRetrySettingsSchema),\n\tmaxDelayMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Legacy retry delay setting. Use provider.maxRetryDelayMs instead.\",\n\t\t\tdeprecated: true,\n\t\t}),\n\t),\n});\n\nconst TerminalSettingsSchema = Type.Object({\n\tshowImages: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Show images when the terminal supports them.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.showImages,\n\t\t}),\n\t),\n\timageWidthCells: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Preferred inline image width in terminal cells.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.imageWidthCells,\n\t\t}),\n\t),\n\tclearOnShrink: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Clear empty rows when content shrinks.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.clearOnShrink,\n\t\t}),\n\t),\n\tshowTerminalProgress: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Show OSC 9;4 terminal progress indicators.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.terminal.showTerminalProgress,\n\t\t}),\n\t),\n\thyperlinks: Type.Optional(\n\t\tType.Union([Type.Boolean(), Type.Literal(\"auto\")], {\n\t\t\tdescription: 'Hyperlink capability override. \"auto\" and invalid values keep terminal detection.',\n\t\t}),\n\t),\n\timages: Type.Optional(\n\t\tType.Union([Type.Literal(\"kitty\"), Type.Literal(\"iterm2\"), Type.Literal(\"auto\"), Type.Literal(false)], {\n\t\t\tdescription: 'Inline-image protocol override. false disables images; \"auto\" keeps terminal detection.',\n\t\t}),\n\t),\n\ttrueColor: Type.Optional(\n\t\tType.Union([Type.Boolean(), Type.Literal(\"auto\")], {\n\t\t\tdescription: 'Truecolor capability override. \"auto\" and invalid values keep terminal detection.',\n\t\t}),\n\t),\n});\n\nconst ImageSettingsSchema = Type.Object({\n\tautoResize: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Resize images to 2000x2000 maximum for better model compatibility.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.images.autoResize,\n\t\t}),\n\t),\n\tblockImages: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"When true, prevents all images from being sent to LLM providers.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.images.blockImages,\n\t\t}),\n\t),\n});\n\nconst SearchSettingsSchema = Type.Object({\n\tcontextBefore: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Number of context lines before each search match.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.search.contextBefore,\n\t\t}),\n\t),\n\tcontextAfter: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription: \"Number of context lines after each search match.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.search.contextAfter,\n\t\t}),\n\t),\n});\n\nconst BashInterceptorSettingsSchema = Type.Object({\n\tenabled: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription:\n\t\t\t\t\"When true, block shell commands that have dedicated tools and offer remaining bash tool calls to user_bash extension handlers before local execution.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.bashInterceptor.enabled,\n\t\t}),\n\t),\n});\n\nconst HerdrSettingsSchema = Type.Object({\n\tenabled: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Enable the built-in reporter in an eligible Herdr pane.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.herdr.enabled,\n\t\t}),\n\t),\n});\n\nconst ModelRoutingSettingsSchema = Type.Object(\n\t{\n\t\tallowedProviders: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"When nonempty, only models from these provider IDs are routing candidates.\",\n\t\t\t}),\n\t\t),\n\t\texcludedProviders: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"Provider IDs that are never routing candidates. Applied after allowedProviders.\",\n\t\t\t}),\n\t\t),\n\t\tallowedModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"When nonempty, only models matching these full-ID or glob patterns, as in enabledModels, are routing candidates.\",\n\t\t\t}),\n\t\t),\n\t\texcludedModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"Models matching these full-ID or glob patterns are never routing candidates. Applied after allowedModels.\",\n\t\t\t}),\n\t\t),\n\t},\n\t{\n\t\tdescription:\n\t\t\t'Provider and model filters for the candidates model \"auto\" may route to. Does not affect routerModel.',\n\t},\n);\n\nfunction thinkingBudgetsSettings(options?: TSchemaOptions) {\n\treturn Type.Object(\n\t\t{\n\t\t\tminimal: Type.Optional(Type.Number()),\n\t\t\tlow: Type.Optional(Type.Number()),\n\t\t\tmedium: Type.Optional(Type.Number()),\n\t\t\thigh: Type.Optional(Type.Number()),\n\t\t},\n\t\toptions,\n\t);\n}\n\nconst ThinkingBudgetsSettingsSchema = thinkingBudgetsSettings();\n\nconst MarkdownSettingsSchema = Type.Object({\n\tcodeBlockIndent: Type.Optional(Type.String({ default: SETTINGS_DEFAULTS.markdown.codeBlockIndent })),\n\tmermaid: Type.Optional(\n\t\tType.Union([Type.Literal(\"off\"), Type.Literal(\"final\"), Type.Literal(\"streaming\")], {\n\t\t\tdefault: SETTINGS_DEFAULTS.markdown.mermaid,\n\t\t}),\n\t),\n\tlatex: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Render LaTeX expressions as terminal-friendly Unicode math.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.markdown.latex,\n\t\t}),\n\t),\n});\n\nconst WarningSettingsSchema = Type.Object({\n\tanthropicExtraUsage: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.warnings.anthropicExtraUsage })),\n});\n\nconst TaskSettingsSchema = Type.Object({\n\theartbeatMs: Type.Optional(\n\t\tType.Union([Type.Literal(0), Type.Number({ minimum: 60_000 })], {\n\t\t\tdescription:\n\t\t\t\t\"Default cadence, in milliseconds, of the periodic heartbeat sent to a chat for each of its running background shells and subagents. 0 disables; otherwise at least 60000. A tool call's heartbeatMs overrides it.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.tasks.heartbeatMs,\n\t\t}),\n\t),\n});\n\nfunction codemodeMode(options?: TSchemaOptions) {\n\treturn Type.Union([Type.Literal(\"on\"), Type.Literal(\"only\")], options);\n}\n\nconst CodemodeModeSchema = codemodeMode();\n\nconst CodemodeSettingsSchema = Type.Object({\n\tmode: Type.Optional(\n\t\tcodemodeMode({\n\t\t\tdescription:\n\t\t\t\t'How codemode presents tools. \"on\" keeps direct tool declarations visible with script-call information; \"only\" hides ordinary direct callable declarations so the model uses scripts. Model-only tools remain directly available.',\n\t\t\tdefault: SETTINGS_DEFAULTS.codemode.mode,\n\t\t}),\n\t),\n\tinlineBudget: Type.Optional(\n\t\tType.Number({\n\t\t\tminimum: 0,\n\t\t\tdescription: \"Estimated tokens available for inline codemode tool declarations.\",\n\t\t\tdefault: SETTINGS_DEFAULTS.codemode.inlineBudget,\n\t\t}),\n\t),\n});\n\nconst PackageSourceSchema = Type.Union(\n\t[\n\t\tType.String({ description: \"Load all resources from the package.\" }),\n\t\tType.Object({\n\t\t\tsource: Type.String(),\n\t\t\tautoload: Type.Optional(\n\t\t\t\tType.Boolean({ description: \"When false, start empty and only apply explicit resource patterns.\" }),\n\t\t\t),\n\t\t\textensions: Type.Optional(Type.Array(Type.String())),\n\t\t\tskills: Type.Optional(Type.Array(Type.String())),\n\t\t\tprompts: Type.Optional(Type.Array(Type.String())),\n\t\t\tthemes: Type.Optional(Type.Array(Type.String())),\n\t\t\tworkflows: Type.Optional(Type.Array(Type.String())),\n\t\t\tmcpServers: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t],\n\t{\n\t\tdescription:\n\t\t\t\"Package source for npm or git packages. Use the string form to load all resources or the object form to filter resources.\",\n\t},\n);\n\nconst StringArraySchema = Type.Array(Type.String());\n\nconst SkillsInputSchema = Type.Union(\n\t[\n\t\tStringArraySchema,\n\t\tType.Object(\n\t\t\t{\n\t\t\t\tenableSkillCommands: Type.Optional(Type.Boolean()),\n\t\t\t\tcustomDirectories: Type.Optional(StringArraySchema),\n\t\t\t},\n\t\t\t{ deprecated: true },\n\t\t),\n\t],\n\t{ description: \"Local skill file paths or directories.\" },\n);\n\nexport const StorageSelectionSchema = Type.Union([\n\tType.Object(\n\t\t{\n\t\t\tpath: Type.Optional(Type.String({ description: \"Database path relative to the Atomic home directory.\" })),\n\t\t\tmemory: Type.Optional(Type.Boolean({ description: \"Explicitly select ephemeral storage.\" })),\n\t\t\tprefix: Type.Optional(Type.String()),\n\t\t},\n\t\t{\n\t\t\tadditionalProperties: false,\n\t\t\tnot: { required: [\"path\", \"memory\"], properties: { path: { minLength: 1 }, memory: { const: true } } },\n\t\t},\n\t),\n\tType.Object(\n\t\t{\n\t\t\tadapter: Type.String({ minLength: 1, description: \"User-installed storage adapter module specifier.\" }),\n\t\t\toptions: Type.Optional(\n\t\t\t\tType.Record(Type.String(), Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Null()])),\n\t\t\t),\n\t\t\tsecrets: Type.Optional(\n\t\t\t\tType.Record(\n\t\t\t\t\tType.String(),\n\t\t\t\t\tType.Union([\n\t\t\t\t\t\tType.Object({ env: Type.String() }, { additionalProperties: false }),\n\t\t\t\t\t\tType.Object({ file: Type.String() }, { additionalProperties: false }),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t),\n\t\t\tprefix: Type.Optional(Type.String()),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n]);\n\nexport const SessionStorageSelectionSchema = Type.Union([\n\tStorageSelectionSchema,\n\tType.Object({ dir: Type.String() }, { additionalProperties: false }),\n]);\n\nconst ResourceLimitsSchema = Type.Object(\n\t{\n\t\tsession: Type.Optional(Type.Integer({ minimum: 1 })),\n\t\tprocess: Type.Optional(Type.Integer({ minimum: 1 })),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst WorkflowsSettingsSchema = Type.Union(\n\t[\n\t\tStringArraySchema,\n\t\tType.Object({\n\t\t\tpaths: Type.Optional(Type.Array(Type.String(), { description: \"Workflow resource paths.\" })),\n\t\t\tjournal: Type.Optional(StorageSelectionSchema),\n\t\t\tlocalWorkers: Type.Optional(\n\t\t\t\tType.Object(\n\t\t\t\t\t{\n\t\t\t\t\t\tcount: Type.Integer({ minimum: 1, description: \"Number of local worker processes.\" }),\n\t\t\t\t\t\tdefinitions: Type.Array(\n\t\t\t\t\t\t\tType.Object({ path: Type.String(), exportName: Type.String() }, { additionalProperties: false }),\n\t\t\t\t\t\t\t{ description: \"Importable child workflow definitions workers may run.\" },\n\t\t\t\t\t\t),\n\t\t\t\t\t\tstartupTimeoutMs: Type.Optional(\n\t\t\t\t\t\t\tType.Integer({\n\t\t\t\t\t\t\t\tminimum: 1,\n\t\t\t\t\t\t\t\tmaximum: 2_147_483_647,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Milliseconds each worker process may take to become ready. Default: 30000, scaled up when workers plus load exceed CPU cores (at most 600000).\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tleaseMs: Type.Optional(\n\t\t\t\t\t\t\tType.Integer({\n\t\t\t\t\t\t\t\tminimum: 2000,\n\t\t\t\t\t\t\t\tmaximum: 2_147_483_647,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Milliseconds a live worker that has stopped responding keeps its child before the child is replayed elsewhere. Default: 30000.\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmaxLoadPerCpu: Type.Optional(\n\t\t\t\t\t\t\tType.Number({\n\t\t\t\t\t\t\t\tminimum: 0,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Load per CPU (1-minute load average / CPU cores) above which pooled stages start one at a time, at most one every 5 seconds. Default: 3. 0 turns it off.\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t),\n\t\t\t),\n\t\t\tadmission: Type.Optional(\n\t\t\t\tType.Object(\n\t\t\t\t\t{\n\t\t\t\t\t\tlimits: Type.Optional(ResourceLimitsSchema),\n\t\t\t\t\t\tuserLimits: Type.Optional(ResourceLimitsSchema),\n\t\t\t\t\t\tuserDatabase: Type.Optional(Type.String()),\n\t\t\t\t\t\thost: Type.Optional(\n\t\t\t\t\t\t\tType.Object(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmaxLoadPerCpu: Type.Optional(Type.Number({ minimum: 0 })),\n\t\t\t\t\t\t\t\t\tminFreeMemoryBytes: Type.Optional(Type.Number({ minimum: 0 })),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t),\n\t\t\t),\n\t\t}),\n\t],\n\t{\n\t\tdescription:\n\t\t\t'Local workflow paths, or an object with \"paths\", \"journal\" storage, \"localWorkers\" and \"admission\" settings.',\n\t},\n);\n\nexport const SettingsSchema = Type.Object(\n\t{\n\t\t$schema: Type.Optional(Type.String({ description: \"JSON Schema reference.\" })),\n\t\tstorage: Type.Optional(StorageSelectionSchema),\n\t\tsessions: Type.Optional(Type.Object({ storage: Type.Optional(SessionStorageSelectionSchema) })),\n\t\tlastChangelogVersion: Type.Optional(Type.String()),\n\t\tfirstRunOnboardingStartedVersion: Type.Optional(\n\t\t\tType.String({ description: \"Managed onboarding state; leave unchanged.\" }),\n\t\t),\n\t\tonboardedVersion: Type.Optional(\n\t\t\tType.String({ description: \"Managed onboarding completion state; leave unchanged.\" }),\n\t\t),\n\t\tdefaultProvider: Type.Optional(Type.String()),\n\t\tdefaultModel: Type.Optional(Type.String()),\n\t\trouterModel: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription:\n\t\t\t\t\t'Inference model for workflow-stage and subagent model: \"auto\" selection only. An exact provider/model selects a registered chat or classifier model; \"auto\" and an empty string use the current chat model.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.routerModel,\n\t\t\t}),\n\t\t),\n\t\tcompactionModel: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription:\n\t\t\t\t\t'Compaction model: \"auto\" or an empty string uses the session model, and an exact provider/model selects a registered chat model, classifier, or compactor.',\n\t\t\t}),\n\t\t),\n\t\tmodelRouting: Type.Optional(ModelRoutingSettingsSchema),\n\t\tdefaultThinkingLevel: Type.Optional(ModelThinkingLevelSchema),\n\t\tmodelThinkingLevels: Type.Optional(\n\t\t\tType.Record(Type.String(), ModelThinkingLevelSchema, {\n\t\t\t\tdescription: 'Per-model default thinking level overrides keyed by \"provider/modelId\".',\n\t\t\t}),\n\t\t),\n\t\tfallbackModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t'Ordered main-chat fallback models, written as \"provider/model\" with an optional thinking-level suffix such as \":high\".',\n\t\t\t}),\n\t\t),\n\t\ttransport: Type.Optional(\n\t\t\tType.Union(\n\t\t\t\t[Type.Literal(\"auto\"), Type.Literal(\"sse\"), Type.Literal(\"websocket\"), Type.Literal(\"websocket-cached\")],\n\t\t\t\t{ default: SETTINGS_DEFAULTS.transport },\n\t\t\t),\n\t\t),\n\t\tsteeringMode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"all\"), Type.Literal(\"one-at-a-time\")], {\n\t\t\t\tdefault: SETTINGS_DEFAULTS.steeringMode,\n\t\t\t}),\n\t\t),\n\t\tfollowUpMode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"all\"), Type.Literal(\"one-at-a-time\")], {\n\t\t\t\tdefault: SETTINGS_DEFAULTS.followUpMode,\n\t\t\t}),\n\t\t),\n\t\ttheme: Type.Optional(Type.String()),\n\t\tenableAnalytics: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Opt in to analytics data sharing. Storage only; Atomic does not transmit analytics.\",\n\t\t\t}),\n\t\t),\n\t\ttrackingId: Type.Optional(\n\t\t\tType.String({ description: \"Analytics tracking identifier, generated when analytics is enabled.\" }),\n\t\t),\n\t\tdeviceId: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Stable installation UUID, generated when authentication first needs it. Global only.\",\n\t\t\t}),\n\t\t),\n\t\tshowCacheMissNotices: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Show cache cost and provider recovery notices.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.showCacheMissNotices,\n\t\t\t}),\n\t\t),\n\t\tcompaction: Type.Optional(CompactionSettingsSchema),\n\t\tbranchSummary: Type.Optional(BranchSummarySettingsSchema),\n\t\tsessionSummary: Type.Optional(SessionSummarySettingsSchema),\n\t\tretry: Type.Optional(RetrySettingsSchema),\n\t\thideThinkingBlock: Type.Optional(Type.Boolean({ default: SETTINGS_DEFAULTS.hideThinkingBlock })),\n\t\texternalEditor: Type.Optional(\n\t\t\tType.String({ description: \"Command for Ctrl+G external editor; takes precedence over VISUAL and EDITOR.\" }),\n\t\t),\n\t\tshellPath: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Custom shell path, for example for Cygwin on Windows, with support for leading ~ expansion.\",\n\t\t\t}),\n\t\t),\n\t\tquietStartup: Type.Optional(\n\t\t\tType.Union([Type.Boolean(), Type.Literal(\"header\")], {\n\t\t\t\tdescription: 'When true, hide all startup output. When \"header\", keep only the startup header.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.quietStartup,\n\t\t\t}),\n\t\t),\n\t\tdefaultProjectTrust: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"ask\"), Type.Literal(\"always\"), Type.Literal(\"never\")], {\n\t\t\t\tdescription: \"Global setting only.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.defaultProjectTrust,\n\t\t\t}),\n\t\t),\n\t\tshellCommandPrefix: Type.Optional(\n\t\t\tType.String({ description: \"Prefix prepended to every bash command, for example to enable shell aliases.\" }),\n\t\t),\n\t\tbashInterceptor: Type.Optional(BashInterceptorSettingsSchema),\n\t\tsearch: Type.Optional(SearchSettingsSchema),\n\t\tnpmCommand: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t'Command used for npm package lookup and installation, in argv form such as [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"].',\n\t\t\t}),\n\t\t),\n\t\tselfUpdateCommand: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tminItems: 1,\n\t\t\t\tdescription:\n\t\t\t\t\t'Command `atomic update` runs to update Atomic itself, in argv form such as [\"mise\", \"use\", \"-g\", \"npm:{packageName}@{version}\"]. Placeholders: {packageName}, {version}, {installSpec}. ATOMIC_SELF_UPDATE_COMMAND takes precedence. Global setting only.',\n\t\t\t}),\n\t\t),\n\t\tcollapseChangelog: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Show the condensed changelog after update; use /changelog for the full changelog.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.collapseChangelog,\n\t\t\t}),\n\t\t),\n\t\tenableInstallTelemetry: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Send an anonymous version-adoption ping on eligible interactive launches.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.enableInstallTelemetry,\n\t\t\t}),\n\t\t),\n\t\tpackages: Type.Optional(\n\t\t\tType.Array(PackageSourceSchema, {\n\t\t\t\tdescription: \"npm or git package sources, as strings or objects with resource filtering.\",\n\t\t\t}),\n\t\t),\n\t\textensions: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Local extension file paths or directories.\" }),\n\t\t),\n\t\tskills: Type.Optional(SkillsInputSchema),\n\t\tprompts: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Local prompt template file paths or directories.\" }),\n\t\t),\n\t\tthemes: Type.Optional(Type.Array(Type.String(), { description: \"Local theme file paths or directories.\" })),\n\t\tworkflows: Type.Optional(WorkflowsSettingsSchema),\n\t\tenableSkillCommands: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Register skills as /skill:name commands.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.enableSkillCommands,\n\t\t\t}),\n\t\t),\n\t\tterminal: Type.Optional(TerminalSettingsSchema),\n\t\therdr: Type.Optional(HerdrSettingsSchema),\n\t\timages: Type.Optional(ImageSettingsSchema),\n\t\tenabledModels: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"Model patterns for cycling, in the same format as the --models CLI flag.\",\n\t\t\t}),\n\t\t),\n\t\tdefaultTools: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"Initial tool selection. Plain names replace the inherited selection; +name and -name entries add or remove tools.\",\n\t\t\t}),\n\t\t),\n\t\tdoubleEscapeAction: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"fork\"), Type.Literal(\"tree\"), Type.Literal(\"none\")], {\n\t\t\t\tdescription: \"Action for double-escape with an empty editor.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.doubleEscapeAction,\n\t\t\t}),\n\t\t),\n\t\ttreeFilterMode: Type.Optional(\n\t\t\tType.Union(\n\t\t\t\t[\n\t\t\t\t\tType.Literal(\"default\"),\n\t\t\t\t\tType.Literal(\"no-tools\"),\n\t\t\t\t\tType.Literal(\"user-only\"),\n\t\t\t\t\tType.Literal(\"labeled-only\"),\n\t\t\t\t\tType.Literal(\"all\"),\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tdescription: \"Default filter when opening /tree.\",\n\t\t\t\t\tdefault: SETTINGS_DEFAULTS.treeFilterMode,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tthinkingBudgets: Type.Optional(\n\t\t\tthinkingBudgetsSettings({\n\t\t\t\tdescription: \"Custom token budgets for thinking levels.\",\n\t\t\t}),\n\t\t),\n\t\teditorPaddingX: Type.Optional(\n\t\t\tType.Number({\n\t\t\t\tdescription: \"Horizontal padding for the input editor (0-3).\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.editorPaddingX,\n\t\t\t}),\n\t\t),\n\t\toutputPad: Type.Optional(\n\t\t\tType.Union([Type.Literal(0), Type.Literal(1)], {\n\t\t\t\tdescription: \"Horizontal padding for transcript content.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.outputPad,\n\t\t\t}),\n\t\t),\n\t\tautocompleteMaxVisible: Type.Optional(\n\t\t\tType.Number({\n\t\t\t\tdescription: \"Maximum visible items in the autocomplete dropdown (3-20).\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.autocompleteMaxVisible,\n\t\t\t}),\n\t\t),\n\t\tshowHardwareCursor: Type.Optional(\n\t\t\tType.Boolean({ description: \"Show the terminal cursor while still positioning it for IME.\" }),\n\t\t),\n\t\tfullscreenScrollbar: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"auto\"), Type.Literal(\"always\"), Type.Literal(\"hidden\")], {\n\t\t\t\tdescription: \"Fullscreen transcript scrollbar visibility.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenScrollbar,\n\t\t\t}),\n\t\t),\n\t\tfullscreenExitOutput: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"transcript\"), Type.Literal(\"resume-hint\")], {\n\t\t\t\tdescription:\n\t\t\t\t\t\"What the terminal keeps when a fullscreen session exits: the final transcript with a resume hint, or only the resume hint.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenExitOutput,\n\t\t\t}),\n\t\t),\n\t\tfullscreenCopyOnSelect: Type.Optional(\n\t\t\tType.Boolean({\n\t\t\t\tdescription: \"Copy fullscreen text selections automatically on mouse release.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenCopyOnSelect,\n\t\t\t}),\n\t\t),\n\t\tfullscreenWheelScrollLines: Type.Optional(\n\t\t\tType.Union([Type.Number(), Type.Literal(\"auto\")], {\n\t\t\t\tdescription: \"Lines scrolled per wheel event in fullscreen mode; numeric values are clamped from 1 to 100.\",\n\t\t\t\tdefault: SETTINGS_DEFAULTS.fullscreenWheelScrollLines,\n\t\t\t}),\n\t\t),\n\t\tcodemode: Type.Optional(CodemodeSettingsSchema),\n\t\tmarkdown: Type.Optional(MarkdownSettingsSchema),\n\t\twarnings: Type.Optional(WarningSettingsSchema),\n\t\ttasks: Type.Optional(TaskSettingsSchema),\n\t\thttpProxy: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Atomic-managed HTTP clients. Global only.\",\n\t\t\t}),\n\t\t),\n\t\thttpIdleTimeoutMs: Type.Optional(\n\t\t\ttimeoutSetting({\n\t\t\t\tdescription:\n\t\t\t\t\t'HTTP idle timeout as milliseconds, a duration such as \"30s\", \"5m\", or \"1h\", or \"disabled\"; 0 or \"disabled\" disables it.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.httpIdleTimeoutMs,\n\t\t\t}),\n\t\t),\n\t\tcacheWarming: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"off\"), Type.Literal(\"streaming\"), Type.Literal(\"idle\")], {\n\t\t\t\tdescription:\n\t\t\t\t\t'Cache-warming profile. \"idle\" also warms between agent runs. Global only because each refresh costs money.',\n\t\t\t\tdefault: SETTINGS_DEFAULTS.cacheWarming,\n\t\t\t}),\n\t\t),\n\t\twebsocketConnectTimeoutMs: Type.Optional(\n\t\t\ttimeoutSetting({\n\t\t\t\tdescription:\n\t\t\t\t\t'WebSocket connect or open handshake timeout as milliseconds, a duration such as \"30s\", or \"disabled\"; 0 or \"disabled\" disables it.',\n\t\t\t}),\n\t\t),\n\t\tstreamDeadlineMs: Type.Optional(\n\t\t\ttimeoutSetting({\n\t\t\t\tdescription:\n\t\t\t\t\t'Maximum idle gap between two provider stream events as milliseconds, a duration such as \"30s\", or \"disabled\"; 0 or \"disabled\" disables it.',\n\t\t\t}),\n\t\t),\n\t\tqueueMode: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"all\"), Type.Literal(\"one-at-a-time\")], {\n\t\t\t\tdescription: \"Legacy setting migrated to steeringMode.\",\n\t\t\t\tdeprecated: true,\n\t\t\t}),\n\t\t),\n\t\twebsockets: Type.Optional(\n\t\t\tType.Boolean({ description: \"Legacy setting migrated to transport.\", deprecated: true }),\n\t\t),\n\t},\n\t{ additionalProperties: true },\n);\n\ntype SettingsInput = Static<typeof SettingsSchema>;\n\nexport interface CompactionModelOverride extends Static<typeof CompactionModelOverrideSchema> {}\nexport interface CompactionSettings extends Static<typeof CompactionSettingsSchema> {}\nexport interface BranchSummarySettings extends Static<typeof BranchSummarySettingsSchema> {}\nexport interface SessionSummarySettings extends Static<typeof SessionSummarySettingsSchema> {}\nexport interface ProviderRetrySettings extends Static<typeof ProviderRetrySettingsSchema> {}\nexport interface RetrySettings extends Omit<Static<typeof RetrySettingsSchema>, \"maxDelayMs\"> {}\nexport interface TerminalSettings extends Static<typeof TerminalSettingsSchema> {}\nexport interface ImageSettings extends Static<typeof ImageSettingsSchema> {}\nexport interface SearchSettings extends Static<typeof SearchSettingsSchema> {}\nexport interface BashInterceptorSettings extends Static<typeof BashInterceptorSettingsSchema> {}\nexport interface ModelRoutingSettings extends Static<typeof ModelRoutingSettingsSchema> {}\nexport interface ThinkingBudgetsSettings extends Static<typeof ThinkingBudgetsSettingsSchema> {}\nexport type MermaidRenderingMode = NonNullable<Static<typeof MarkdownSettingsSchema>[\"mermaid\"]>;\nexport interface MarkdownSettings extends Static<typeof MarkdownSettingsSchema> {}\nexport interface WarningSettings extends Static<typeof WarningSettingsSchema> {}\nexport interface TaskSettings extends Static<typeof TaskSettingsSchema> {}\nexport type CodemodeMode = Static<typeof CodemodeModeSchema>;\nexport interface CodemodeSettings extends Static<typeof CodemodeSettingsSchema> {}\nexport type DefaultProjectTrust = NonNullable<SettingsInput[\"defaultProjectTrust\"]>;\nexport type QuietStartup = NonNullable<SettingsInput[\"quietStartup\"]>;\nexport type TransportSetting = NonNullable<SettingsInput[\"transport\"]>;\nexport type PackageSource = Static<typeof PackageSourceSchema>;\nexport type FullscreenExitOutput = NonNullable<SettingsInput[\"fullscreenExitOutput\"]>;\nexport type CacheWarmingMode = NonNullable<SettingsInput[\"cacheWarming\"]>;\nexport interface Settings extends Omit<SettingsInput, \"queueMode\" | \"retry\" | \"skills\" | \"websockets\"> {\n\tretry?: RetrySettings;\n\tskills?: string[];\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { Settings } from "./settings-schema.ts";
2
2
  export declare const CACHE_WARMING_MODES: readonly ["off", "streaming", "idle"];
3
- export type { BashInterceptorSettings, BranchSummarySettings, CacheWarmingMode, CodemodeMode, CodemodeSettings, CompactionModelOverride, CompactionSettings, DefaultProjectTrust, FullscreenExitOutput, ImageSettings, MarkdownSettings, MermaidRenderingMode, ModelRoutingSettings, PackageSource, ProviderRetrySettings, QuietStartup, RetrySettings, SearchSettings, SessionSummarySettings, Settings, TerminalSettings, ThinkingBudgetsSettings, TransportSetting, WarningSettings, } from "./settings-schema.ts";
3
+ export type { BashInterceptorSettings, BranchSummarySettings, CacheWarmingMode, CodemodeMode, CodemodeSettings, CompactionModelOverride, CompactionSettings, DefaultProjectTrust, FullscreenExitOutput, ImageSettings, MarkdownSettings, MermaidRenderingMode, ModelRoutingSettings, PackageSource, ProviderRetrySettings, QuietStartup, RetrySettings, SearchSettings, SessionSummarySettings, Settings, TaskSettings, TerminalSettings, ThinkingBudgetsSettings, TransportSetting, WarningSettings, } from "./settings-schema.ts";
4
4
  export type SettingsScope = "global" | "project";
5
5
  export interface SettingsManagerCreateOptions {
6
6
  projectTrusted?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-types.d.ts","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEvE,eAAO,MAAM,mBAAmB,uCAA8E,CAAC;AAE/G,YAAY,EACX,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,GACf,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,4BAA4B;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9F;;;;;;OAMG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAClH,cAAc,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,GAAG,mBAAmB,GAAG,SAAS,CAAC;CAC9F;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACb"}
1
+ {"version":3,"file":"settings-types.d.ts","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEvE,eAAO,MAAM,mBAAmB,uCAA8E,CAAC;AAE/G,YAAY,EACX,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,GACf,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,4BAA4B;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9F;;;;;;OAMG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAClH,cAAc,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,GAAG,mBAAmB,GAAG,SAAS,CAAC;CAC9F;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings-types.js","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAgD,CAAC","sourcesContent":["import type { CacheWarmingMode, Settings } from \"./settings-schema.ts\";\n\nexport const CACHE_WARMING_MODES = [\"off\", \"streaming\", \"idle\"] as const satisfies readonly CacheWarmingMode[];\n\nexport type {\n\tBashInterceptorSettings,\n\tBranchSummarySettings,\n\tCacheWarmingMode,\n\tCodemodeMode,\n\tCodemodeSettings,\n\tCompactionModelOverride,\n\tCompactionSettings,\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tImageSettings,\n\tMarkdownSettings,\n\tMermaidRenderingMode,\n\tModelRoutingSettings,\n\tPackageSource,\n\tProviderRetrySettings,\n\tQuietStartup,\n\tRetrySettings,\n\tSearchSettings,\n\tSessionSummarySettings,\n\tSettings,\n\tTerminalSettings,\n\tThinkingBudgetsSettings,\n\tTransportSetting,\n\tWarningSettings,\n} from \"./settings-schema.ts\";\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport type SettingsFieldOrigin = \"primary\" | \"legacy\";\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n\t/**\n\t * Optional write-specific lock whose callback receives the current primary\n\t * document rather than a layered effective view. Storage implementations\n\t * without a distinct primary document can omit this method; layered storage\n\t * implementations must provide it to keep fallback fields out of the primary\n\t * document.\n\t */\n\twithPrimaryWriteLock?(scope: SettingsScope, fn: (currentPrimary: string | undefined) => string | undefined): void;\n\tgetFieldOrigin?(scope: SettingsScope, field: keyof Settings): SettingsFieldOrigin | undefined;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\tpath?: string;\n\terror: Error;\n}\n"]}
1
+ {"version":3,"file":"settings-types.js","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAgD,CAAC","sourcesContent":["import type { CacheWarmingMode, Settings } from \"./settings-schema.ts\";\n\nexport const CACHE_WARMING_MODES = [\"off\", \"streaming\", \"idle\"] as const satisfies readonly CacheWarmingMode[];\n\nexport type {\n\tBashInterceptorSettings,\n\tBranchSummarySettings,\n\tCacheWarmingMode,\n\tCodemodeMode,\n\tCodemodeSettings,\n\tCompactionModelOverride,\n\tCompactionSettings,\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tImageSettings,\n\tMarkdownSettings,\n\tMermaidRenderingMode,\n\tModelRoutingSettings,\n\tPackageSource,\n\tProviderRetrySettings,\n\tQuietStartup,\n\tRetrySettings,\n\tSearchSettings,\n\tSessionSummarySettings,\n\tSettings,\n\tTaskSettings,\n\tTerminalSettings,\n\tThinkingBudgetsSettings,\n\tTransportSetting,\n\tWarningSettings,\n} from \"./settings-schema.ts\";\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport type SettingsFieldOrigin = \"primary\" | \"legacy\";\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n\t/**\n\t * Optional write-specific lock whose callback receives the current primary\n\t * document rather than a layered effective view. Storage implementations\n\t * without a distinct primary document can omit this method; layered storage\n\t * implementations must provide it to keep fallback fields out of the primary\n\t * document.\n\t */\n\twithPrimaryWriteLock?(scope: SettingsScope, fn: (currentPrimary: string | undefined) => string | undefined): void;\n\tgetFieldOrigin?(scope: SettingsScope, field: keyof Settings): SettingsFieldOrigin | undefined;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\tpath?: string;\n\terror: Error;\n}\n"]}
@@ -1,13 +1,20 @@
1
1
  import type * as C from "./contracts.js";
2
+ import { type TaskHeartbeatDelivery } from "./heartbeat.js";
2
3
  import { type FakeExecution, type FakeRunnerContext, type OwnerLease, type TaskLease, TaskSupervisor, type TrustedTaskHost, type WaitLease } from "./supervisor.js";
3
4
  export type AgentTaskRunnerFactory = (context: FakeRunnerContext, intent: C.AgentIntent) => FakeExecution;
4
- export type AgentTaskHostBinding = Omit<TrustedTaskHost, "createRunner">;
5
+ export type AgentTaskHostBinding = Omit<TrustedTaskHost, "createRunner"> & {
6
+ /** The owner's chat for periodic task heartbeats; omitted, the owner's tasks never heartbeat. */
7
+ heartbeat?: TaskHeartbeatDelivery;
8
+ };
5
9
  /** Internal trusted-host seam. Bind actual host identity, never model-supplied scope. */
6
10
  export declare class AgentTaskHost {
7
11
  private readonly supervisor;
8
12
  private readonly owner;
9
13
  private binding;
10
14
  private readonly messageWaits;
15
+ private readonly heartbeats;
16
+ /** Whether this owner has launched anything; owners that never do pay nothing for heartbeats. */
17
+ private launched;
11
18
  /** Stage replacement updates callbacks, never native identity or ownership. */
12
19
  updateBinding(binding: Omit<AgentTaskHostBinding, "scope">): void;
13
20
  /** Internal projection binding; never serialize these native-backed capabilities. */
@@ -17,6 +24,8 @@ export declare class AgentTaskHost {
17
24
  waitForTask: AgentTaskHost["waitForTask"];
18
25
  };
19
26
  constructor(binding: AgentTaskHostBinding);
27
+ /** One monitor per owner, started with its first launch, whichever session binds it then. */
28
+ private watchHeartbeats;
20
29
  startAgentTask(intent: C.AgentIntent, operation: C.OperationId, runner: AgentTaskRunnerFactory, schedule?: (dispatch: () => Promise<void>) => void): Promise<C.Result<{
21
30
  taskId: C.TaskId;
22
31
  lease: TaskLease;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/tasks/agent-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC,WAAW,KAAK,aAAa,CAAC;AAC1G,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AAKzE,yFAAyF;AACzF,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,+EAA+E;IAC/E,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,GAAG,IAAI,CAEhE;IACD,qFAAqF;IACrF,IAAI,YAAY,IAAI;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;KAAE,CAE/G;IAED,YAAY,OAAO,EAAE,oBAAoB,EAsBxC;IAEK,cAAc,CACnB,MAAM,EAAE,CAAC,CAAC,WAAW,EACrB,SAAS,EAAE,CAAC,CAAC,WAAW,EACxB,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,GAChD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAY3E;IACD,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAE9D;IAED,kBAAkB,CACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,EACrB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,iDASpG;IAED,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,iDAKxF;IAED,gGAAgG;IAChG,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,mFAAmF;IACnF,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAE1C;IAED,OAAO,CAAC,gBAAgB;IAMxB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW;;;2DAGhD;IAED,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,sEAEhC;IAED,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,eAAe,wDAE7B;IAED,OAAO,CAAC,WAAW,CAAS;IAC5B,mFAAmF;IACnF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;IACD,WAAW,IAAI,IAAI,CAElB;IACD,OAAO,CAAC,mBAAmB;CAG3B"}
1
+ {"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/tasks/agent-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { trackAdmittedAgentTask } from "./execution-scope.js";
3
+ import { defaultTaskHeartbeatMs, TaskHeartbeatMonitor } from "./heartbeat.js";
3
4
  import { cancelPausedOwnerTasks } from "./pause.js";
4
5
  import { TaskSupervisor, } from "./supervisor.js";
5
6
  // S1 converges repeated live-scope bindings on one owner, so dispatch context is shared too.
@@ -10,9 +11,13 @@ export class AgentTaskHost {
10
11
  owner;
11
12
  binding;
12
13
  messageWaits = new Set();
14
+ heartbeats;
15
+ /** Whether this owner has launched anything; owners that never do pay nothing for heartbeats. */
16
+ launched = false;
13
17
  /** Stage replacement updates callbacks, never native identity or ownership. */
14
18
  updateBinding(binding) {
15
19
  this.binding = { ...this.binding, ...binding };
20
+ this.watchHeartbeats();
16
21
  }
17
22
  /** Internal projection binding; never serialize these native-backed capabilities. */
18
23
  get ownerBinding() {
@@ -31,6 +36,7 @@ export class AgentTaskHost {
31
36
  this.binding.authorizeCommandLaunch?.(intent);
32
37
  },
33
38
  onTaskSettled: (ref, receipt) => this.binding.onTaskSettled?.(ref, receipt),
39
+ defaultHeartbeatMs: () => this.binding.heartbeat ? defaultTaskHeartbeatMs(this.binding.heartbeat) : undefined,
34
40
  createRunner: (context, intent) => {
35
41
  const runner = runners.getStore();
36
42
  if (!runner)
@@ -42,6 +48,17 @@ export class AgentTaskHost {
42
48
  if (!opened.ok)
43
49
  throw new Error(`${opened.error.code}: ${opened.error.message}`);
44
50
  this.owner = opened.value;
51
+ // One monitor per owner, whichever session currently binds it.
52
+ this.heartbeats = new TaskHeartbeatMonitor({
53
+ supervisor: this.supervisor,
54
+ owner: this.owner,
55
+ delivery: () => this.binding.heartbeat,
56
+ });
57
+ }
58
+ /** One monitor per owner, started with its first launch, whichever session binds it then. */
59
+ watchHeartbeats() {
60
+ if (this.launched && this.binding.heartbeat)
61
+ this.heartbeats.start();
45
62
  }
46
63
  async startAgentTask(intent, operation, runner, schedule) {
47
64
  const started = await runners.run(runner, () => this.supervisor.startAgentTask(this.owner, intent, operation, schedule));
@@ -95,6 +112,7 @@ export class AgentTaskHost {
95
112
  return this.supervisor.watchOwnerTasks(this.owner, cursor);
96
113
  }
97
114
  close(cause) {
115
+ this.heartbeats.dispose();
98
116
  return this.supervisor.closeTaskOwner(this.owner, cause);
99
117
  }
100
118
  tasksPaused = false;
@@ -109,6 +127,8 @@ export class AgentTaskHost {
109
127
  authorizeTaskLaunch() {
110
128
  if (this.tasksPaused)
111
129
  throw new Error("Workflow stage tasks are paused");
130
+ this.launched = true;
131
+ this.watchHeartbeats();
112
132
  }
113
133
  }
114
134
  //# sourceMappingURL=agent-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../../src/core/tasks/agent-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type * as C from \"./contracts.js\";\nimport { trackAdmittedAgentTask } from \"./execution-scope.js\";\nimport { cancelPausedOwnerTasks } from \"./pause.js\";\nimport {\n\ttype FakeExecution,\n\ttype FakeRunnerContext,\n\ttype OwnerLease,\n\ttype TaskLease,\n\tTaskSupervisor,\n\ttype TrustedTaskHost,\n\ttype WaitLease,\n} from \"./supervisor.js\";\n\nexport type AgentTaskRunnerFactory = (context: FakeRunnerContext, intent: C.AgentIntent) => FakeExecution;\nexport type AgentTaskHostBinding = Omit<TrustedTaskHost, \"createRunner\">;\n\n// S1 converges repeated live-scope bindings on one owner, so dispatch context is shared too.\nconst runners = new AsyncLocalStorage<AgentTaskRunnerFactory>();\n\n/** Internal trusted-host seam. Bind actual host identity, never model-supplied scope. */\nexport class AgentTaskHost {\n\tprivate readonly supervisor = new TaskSupervisor();\n\tprivate readonly owner;\n\tprivate binding: AgentTaskHostBinding;\n\tprivate readonly messageWaits = new Set<WaitLease>();\n\t/** Stage replacement updates callbacks, never native identity or ownership. */\n\tupdateBinding(binding: Omit<AgentTaskHostBinding, \"scope\">): void {\n\t\tthis.binding = { ...this.binding, ...binding };\n\t}\n\t/** Internal projection binding; never serialize these native-backed capabilities. */\n\tget ownerBinding(): { supervisor: TaskSupervisor; owner: OwnerLease; waitForTask: AgentTaskHost[\"waitForTask\"] } {\n\t\treturn { supervisor: this.supervisor, owner: this.owner, waitForTask: this.waitForTask.bind(this) };\n\t}\n\n\tconstructor(binding: AgentTaskHostBinding) {\n\t\tthis.binding = binding;\n\t\tconst host = this.supervisor.bindHostSession({\n\t\t\t...binding,\n\t\t\tauthorizeLaunch: (intent) => {\n\t\t\t\tthis.authorizeTaskLaunch();\n\t\t\t\tthis.binding.authorizeLaunch(intent);\n\t\t\t},\n\t\t\tauthorizeCommandLaunch: (intent) => {\n\t\t\t\tthis.authorizeTaskLaunch();\n\t\t\t\tthis.binding.authorizeCommandLaunch?.(intent);\n\t\t\t},\n\t\t\tonTaskSettled: (ref, receipt) => this.binding.onTaskSettled?.(ref, receipt),\n\t\t\tcreateRunner: (context, intent) => {\n\t\t\t\tconst runner = runners.getStore();\n\t\t\t\tif (!runner) throw new Error(\"Agent runner factory missing from launch context\");\n\t\t\t\treturn runner(context, intent);\n\t\t\t},\n\t\t});\n\t\tconst opened = this.supervisor.openTaskOwner(host, binding.scope);\n\t\tif (!opened.ok) throw new Error(`${opened.error.code}: ${opened.error.message}`);\n\t\tthis.owner = opened.value;\n\t}\n\n\tasync startAgentTask(\n\t\tintent: C.AgentIntent,\n\t\toperation: C.OperationId,\n\t\trunner: AgentTaskRunnerFactory,\n\t\tschedule?: (dispatch: () => Promise<void>) => void,\n\t): Promise<C.Result<{ taskId: C.TaskId; lease: TaskLease }, C.StartFailure>> {\n\t\tconst started = await runners.run(runner, () =>\n\t\t\tthis.supervisor.startAgentTask(this.owner, intent, operation, schedule),\n\t\t);\n\t\tif (started.ok)\n\t\t\ttrackAdmittedAgentTask({ host: this, taskId: this.supervisor.taskReference(started.value).taskId });\n\t\treturn started.ok\n\t\t\t? {\n\t\t\t\t\tok: true as const,\n\t\t\t\t\tvalue: { taskId: this.supervisor.taskReference(started.value).taskId, lease: started.value },\n\t\t\t\t}\n\t\t\t: started;\n\t}\n\tresolveTask(taskId: C.TaskId): C.Result<TaskLease, C.WaitError> {\n\t\treturn this.supervisor.lookupTask(this.owner, taskId);\n\t}\n\n\tobserveAgentLaunch(\n\t\ttaskId: C.TaskId,\n\t\tpolicy?: C.WaitPolicy,\n\t\tonRegistered?: (yieldWait: (reason: C.YieldReason) => C.Result<C.WaitOutcome, C.YieldError>) => void,\n\t) {\n\t\tconst task = this.resolveTask(taskId);\n\t\treturn task.ok\n\t\t\t? this.supervisor.initialObservation(task.value, policy, (wait) => {\n\t\t\t\t\tif (policy?.kind === \"foreground\") this.trackMessageWait(wait);\n\t\t\t\t\tonRegistered?.((reason) => this.supervisor.yieldTaskWait(wait, reason));\n\t\t\t\t})\n\t\t\t: Promise.resolve(task);\n\t}\n\n\twaitForTask(taskId: C.TaskId, budgetMs?: number, onRegistered?: (wait: WaitLease) => void) {\n\t\treturn this.supervisor.waitForTaskId(this.owner, taskId, budgetMs, (wait) => {\n\t\t\tthis.trackMessageWait(wait);\n\t\t\tonRegistered?.(wait);\n\t\t});\n\t}\n\n\t/** Let inbound routing reach SDK admission instead of waiting for this owner to become idle. */\n\tget hasActiveTaskWaits(): boolean {\n\t\treturn this.messageWaits.size > 0;\n\t}\n\n\t/** Incoming owner messages release observation only, never the child execution. */\n\tyieldTaskWaits(reason: C.YieldReason): void {\n\t\tfor (const wait of this.messageWaits) this.supervisor.yieldTaskWait(wait, reason);\n\t}\n\n\tprivate trackMessageWait(wait: WaitLease): void {\n\t\tthis.messageWaits.add(wait);\n\t\tconst remove = () => this.messageWaits.delete(wait);\n\t\tvoid this.supervisor.observeTaskWait(wait).then(remove, remove);\n\t}\n\n\tcancelTask(taskId: C.TaskId, cause: C.CancelCause) {\n\t\tconst task = this.resolveTask(taskId);\n\t\treturn task.ok ? this.supervisor.cancelTask(task.value, cause) : Promise.resolve(task);\n\t}\n\n\twatchOwnerTasks(cursor?: C.Cursor) {\n\t\treturn this.supervisor.watchOwnerTasks(this.owner, cursor);\n\t}\n\n\tclose(cause: C.OwnerCloseCause) {\n\t\treturn this.supervisor.closeTaskOwner(this.owner, cause);\n\t}\n\n\tprivate tasksPaused = false;\n\t/** Reversible execution hold; message admission and owner identity remain open. */\n\tpauseTasks(): Promise<void> {\n\t\tthis.tasksPaused = true;\n\t\treturn cancelPausedOwnerTasks(this);\n\t}\n\tresumeTasks(): void {\n\t\tthis.tasksPaused = false;\n\t}\n\tprivate authorizeTaskLaunch(): void {\n\t\tif (this.tasksPaused) throw new Error(\"Workflow stage tasks are paused\");\n\t}\n}\n"]}
1
+ {"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../../src/core/tasks/agent-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type * as C from \"./contracts.js\";\nimport { trackAdmittedAgentTask } from \"./execution-scope.js\";\nimport { defaultTaskHeartbeatMs, type TaskHeartbeatDelivery, TaskHeartbeatMonitor } from \"./heartbeat.js\";\nimport { cancelPausedOwnerTasks } from \"./pause.js\";\nimport {\n\ttype FakeExecution,\n\ttype FakeRunnerContext,\n\ttype OwnerLease,\n\ttype TaskLease,\n\tTaskSupervisor,\n\ttype TrustedTaskHost,\n\ttype WaitLease,\n} from \"./supervisor.js\";\n\nexport type AgentTaskRunnerFactory = (context: FakeRunnerContext, intent: C.AgentIntent) => FakeExecution;\nexport type AgentTaskHostBinding = Omit<TrustedTaskHost, \"createRunner\"> & {\n\t/** The owner's chat for periodic task heartbeats; omitted, the owner's tasks never heartbeat. */\n\theartbeat?: TaskHeartbeatDelivery;\n};\n\n// S1 converges repeated live-scope bindings on one owner, so dispatch context is shared too.\nconst runners = new AsyncLocalStorage<AgentTaskRunnerFactory>();\n\n/** Internal trusted-host seam. Bind actual host identity, never model-supplied scope. */\nexport class AgentTaskHost {\n\tprivate readonly supervisor = new TaskSupervisor();\n\tprivate readonly owner;\n\tprivate binding: AgentTaskHostBinding;\n\tprivate readonly messageWaits = new Set<WaitLease>();\n\tprivate readonly heartbeats: TaskHeartbeatMonitor;\n\t/** Whether this owner has launched anything; owners that never do pay nothing for heartbeats. */\n\tprivate launched = false;\n\t/** Stage replacement updates callbacks, never native identity or ownership. */\n\tupdateBinding(binding: Omit<AgentTaskHostBinding, \"scope\">): void {\n\t\tthis.binding = { ...this.binding, ...binding };\n\t\tthis.watchHeartbeats();\n\t}\n\t/** Internal projection binding; never serialize these native-backed capabilities. */\n\tget ownerBinding(): { supervisor: TaskSupervisor; owner: OwnerLease; waitForTask: AgentTaskHost[\"waitForTask\"] } {\n\t\treturn { supervisor: this.supervisor, owner: this.owner, waitForTask: this.waitForTask.bind(this) };\n\t}\n\n\tconstructor(binding: AgentTaskHostBinding) {\n\t\tthis.binding = binding;\n\t\tconst host = this.supervisor.bindHostSession({\n\t\t\t...binding,\n\t\t\tauthorizeLaunch: (intent) => {\n\t\t\t\tthis.authorizeTaskLaunch();\n\t\t\t\tthis.binding.authorizeLaunch(intent);\n\t\t\t},\n\t\t\tauthorizeCommandLaunch: (intent) => {\n\t\t\t\tthis.authorizeTaskLaunch();\n\t\t\t\tthis.binding.authorizeCommandLaunch?.(intent);\n\t\t\t},\n\t\t\tonTaskSettled: (ref, receipt) => this.binding.onTaskSettled?.(ref, receipt),\n\t\t\tdefaultHeartbeatMs: () =>\n\t\t\t\tthis.binding.heartbeat ? defaultTaskHeartbeatMs(this.binding.heartbeat) : undefined,\n\t\t\tcreateRunner: (context, intent) => {\n\t\t\t\tconst runner = runners.getStore();\n\t\t\t\tif (!runner) throw new Error(\"Agent runner factory missing from launch context\");\n\t\t\t\treturn runner(context, intent);\n\t\t\t},\n\t\t});\n\t\tconst opened = this.supervisor.openTaskOwner(host, binding.scope);\n\t\tif (!opened.ok) throw new Error(`${opened.error.code}: ${opened.error.message}`);\n\t\tthis.owner = opened.value;\n\t\t// One monitor per owner, whichever session currently binds it.\n\t\tthis.heartbeats = new TaskHeartbeatMonitor({\n\t\t\tsupervisor: this.supervisor,\n\t\t\towner: this.owner,\n\t\t\tdelivery: () => this.binding.heartbeat,\n\t\t});\n\t}\n\n\t/** One monitor per owner, started with its first launch, whichever session binds it then. */\n\tprivate watchHeartbeats(): void {\n\t\tif (this.launched && this.binding.heartbeat) this.heartbeats.start();\n\t}\n\n\tasync startAgentTask(\n\t\tintent: C.AgentIntent,\n\t\toperation: C.OperationId,\n\t\trunner: AgentTaskRunnerFactory,\n\t\tschedule?: (dispatch: () => Promise<void>) => void,\n\t): Promise<C.Result<{ taskId: C.TaskId; lease: TaskLease }, C.StartFailure>> {\n\t\tconst started = await runners.run(runner, () =>\n\t\t\tthis.supervisor.startAgentTask(this.owner, intent, operation, schedule),\n\t\t);\n\t\tif (started.ok)\n\t\t\ttrackAdmittedAgentTask({ host: this, taskId: this.supervisor.taskReference(started.value).taskId });\n\t\treturn started.ok\n\t\t\t? {\n\t\t\t\t\tok: true as const,\n\t\t\t\t\tvalue: { taskId: this.supervisor.taskReference(started.value).taskId, lease: started.value },\n\t\t\t\t}\n\t\t\t: started;\n\t}\n\tresolveTask(taskId: C.TaskId): C.Result<TaskLease, C.WaitError> {\n\t\treturn this.supervisor.lookupTask(this.owner, taskId);\n\t}\n\n\tobserveAgentLaunch(\n\t\ttaskId: C.TaskId,\n\t\tpolicy?: C.WaitPolicy,\n\t\tonRegistered?: (yieldWait: (reason: C.YieldReason) => C.Result<C.WaitOutcome, C.YieldError>) => void,\n\t) {\n\t\tconst task = this.resolveTask(taskId);\n\t\treturn task.ok\n\t\t\t? this.supervisor.initialObservation(task.value, policy, (wait) => {\n\t\t\t\t\tif (policy?.kind === \"foreground\") this.trackMessageWait(wait);\n\t\t\t\t\tonRegistered?.((reason) => this.supervisor.yieldTaskWait(wait, reason));\n\t\t\t\t})\n\t\t\t: Promise.resolve(task);\n\t}\n\n\twaitForTask(taskId: C.TaskId, budgetMs?: number, onRegistered?: (wait: WaitLease) => void) {\n\t\treturn this.supervisor.waitForTaskId(this.owner, taskId, budgetMs, (wait) => {\n\t\t\tthis.trackMessageWait(wait);\n\t\t\tonRegistered?.(wait);\n\t\t});\n\t}\n\n\t/** Let inbound routing reach SDK admission instead of waiting for this owner to become idle. */\n\tget hasActiveTaskWaits(): boolean {\n\t\treturn this.messageWaits.size > 0;\n\t}\n\n\t/** Incoming owner messages release observation only, never the child execution. */\n\tyieldTaskWaits(reason: C.YieldReason): void {\n\t\tfor (const wait of this.messageWaits) this.supervisor.yieldTaskWait(wait, reason);\n\t}\n\n\tprivate trackMessageWait(wait: WaitLease): void {\n\t\tthis.messageWaits.add(wait);\n\t\tconst remove = () => this.messageWaits.delete(wait);\n\t\tvoid this.supervisor.observeTaskWait(wait).then(remove, remove);\n\t}\n\n\tcancelTask(taskId: C.TaskId, cause: C.CancelCause) {\n\t\tconst task = this.resolveTask(taskId);\n\t\treturn task.ok ? this.supervisor.cancelTask(task.value, cause) : Promise.resolve(task);\n\t}\n\n\twatchOwnerTasks(cursor?: C.Cursor) {\n\t\treturn this.supervisor.watchOwnerTasks(this.owner, cursor);\n\t}\n\n\tclose(cause: C.OwnerCloseCause) {\n\t\tthis.heartbeats.dispose();\n\t\treturn this.supervisor.closeTaskOwner(this.owner, cause);\n\t}\n\n\tprivate tasksPaused = false;\n\t/** Reversible execution hold; message admission and owner identity remain open. */\n\tpauseTasks(): Promise<void> {\n\t\tthis.tasksPaused = true;\n\t\treturn cancelPausedOwnerTasks(this);\n\t}\n\tresumeTasks(): void {\n\t\tthis.tasksPaused = false;\n\t}\n\tprivate authorizeTaskLaunch(): void {\n\t\tif (this.tasksPaused) throw new Error(\"Workflow stage tasks are paused\");\n\t\tthis.launched = true;\n\t\tthis.watchHeartbeats();\n\t}\n}\n"]}
@@ -106,6 +106,8 @@ export type AgentIntent = {
106
106
  cwd?: string;
107
107
  parentTaskId?: TaskId;
108
108
  readonly routerSelection?: RouterSelection;
109
+ /** Heartbeat cadence for this task in milliseconds; `0` disables. Omitted uses the owner default. */
110
+ readonly heartbeatMs?: number;
109
111
  };
110
112
  export type CommandIntent = {
111
113
  kind: "command";
@@ -129,6 +131,8 @@ export type CommandIntent = {
129
131
  };
130
132
  executionTimeoutMs?: number;
131
133
  parentTaskId?: TaskId;
134
+ /** Heartbeat cadence for this task in milliseconds; `0` disables. Omitted uses the owner default. */
135
+ readonly heartbeatMs?: number;
132
136
  };
133
137
  export type TaskIntent = AgentIntent | CommandIntent;
134
138
  export type TaskWaitConfiguration = {
@@ -245,6 +249,8 @@ export type TaskRecord = {
245
249
  model?: string;
246
250
  thinking?: string;
247
251
  readonly routerSelection?: RouterSelection;
252
+ /** Heartbeat cadence the task was launched with; `0` disables. Omitted uses the owner default. */
253
+ readonly heartbeatMs?: number;
248
254
  execution: Execution;
249
255
  observation: HostObservation;
250
256
  /** Retained native background membership, independent of the current wait. */