@robota-sdk/agent-cli 3.0.0-beta.77 → 3.0.0-beta.79

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 (87) hide show
  1. package/dist/node/bin.js +310 -20
  2. package/dist/node/bin.js.map +1 -1
  3. package/dist/node/index.cjs +310 -20
  4. package/dist/node/index.d.ts.map +1 -1
  5. package/dist/node/index.js +309 -19
  6. package/dist/node/index.js.map +1 -1
  7. package/package.json +31 -15
  8. package/dist/node/child-process-subagent-ipc--Vp2dk1v.js +0 -2
  9. package/dist/node/child-process-subagent-ipc--Vp2dk1v.js.map +0 -1
  10. package/dist/node/child-process-subagent-ipc-Aitv2i6E.cjs +0 -1
  11. package/dist/node/child-process-subagent-ipc-CEy8bLN6.cjs +0 -1
  12. package/dist/node/child-process-subagent-ipc-DVpVp43R.js +0 -2
  13. package/dist/node/child-process-subagent-ipc-DVpVp43R.js.map +0 -1
  14. package/dist/node/cli.cjs +0 -1
  15. package/dist/node/cli.d.ts +0 -7
  16. package/dist/node/cli.d.ts.map +0 -1
  17. package/dist/node/cli.js +0 -2
  18. package/dist/node/cli.js.map +0 -1
  19. package/dist/node/constants.cjs +0 -1
  20. package/dist/node/constants.js +0 -2
  21. package/dist/node/constants.js.map +0 -1
  22. package/dist/node/init/init-command.cjs +0 -32
  23. package/dist/node/init/init-command.js +0 -33
  24. package/dist/node/init/init-command.js.map +0 -1
  25. package/dist/node/modes/print-mode.cjs +0 -6
  26. package/dist/node/modes/print-mode.js +0 -7
  27. package/dist/node/modes/print-mode.js.map +0 -1
  28. package/dist/node/modes/shell-exec.cjs +0 -1
  29. package/dist/node/modes/shell-exec.js +0 -2
  30. package/dist/node/modes/shell-exec.js.map +0 -1
  31. package/dist/node/modes/tui-mode.cjs +0 -1
  32. package/dist/node/modes/tui-mode.js +0 -2
  33. package/dist/node/modes/tui-mode.js.map +0 -1
  34. package/dist/node/provider-default-definitions-CKtxv2k0.js +0 -2
  35. package/dist/node/provider-default-definitions-CKtxv2k0.js.map +0 -1
  36. package/dist/node/provider-default-definitions-GFiYzACo.cjs +0 -1
  37. package/dist/node/provider-default-definitions-g0ZUDeii.cjs +0 -1
  38. package/dist/node/startup/append-system-prompt.cjs +0 -3
  39. package/dist/node/startup/append-system-prompt.js +0 -4
  40. package/dist/node/startup/append-system-prompt.js.map +0 -1
  41. package/dist/node/startup/args-to-options.cjs +0 -1
  42. package/dist/node/startup/args-to-options.js +0 -2
  43. package/dist/node/startup/args-to-options.js.map +0 -1
  44. package/dist/node/startup/command-setup.cjs +0 -1
  45. package/dist/node/startup/command-setup.d.ts +0 -11
  46. package/dist/node/startup/command-setup.d.ts.map +0 -1
  47. package/dist/node/startup/command-setup.js +0 -2
  48. package/dist/node/startup/command-setup.js.map +0 -1
  49. package/dist/node/startup/config-phase.cjs +0 -1
  50. package/dist/node/startup/config-phase.js +0 -2
  51. package/dist/node/startup/config-phase.js.map +0 -1
  52. package/dist/node/startup/preflight.cjs +0 -1
  53. package/dist/node/startup/preflight.js +0 -2
  54. package/dist/node/startup/preflight.js.map +0 -1
  55. package/dist/node/startup/provider-setup.cjs +0 -1
  56. package/dist/node/startup/provider-setup.js +0 -2
  57. package/dist/node/startup/provider-setup.js.map +0 -1
  58. package/dist/node/startup/provider-startup.cjs +0 -2
  59. package/dist/node/startup/provider-startup.js +0 -3
  60. package/dist/node/startup/provider-startup.js.map +0 -1
  61. package/dist/node/startup/reset-config.cjs +0 -1
  62. package/dist/node/startup/reset-config.js +0 -2
  63. package/dist/node/startup/reset-config.js.map +0 -1
  64. package/dist/node/startup/session-setup.cjs +0 -1
  65. package/dist/node/startup/session-setup.js +0 -2
  66. package/dist/node/startup/session-setup.js.map +0 -1
  67. package/dist/node/startup/subagent-setup.cjs +0 -1
  68. package/dist/node/startup/subagent-setup.js +0 -2
  69. package/dist/node/startup/subagent-setup.js.map +0 -1
  70. package/dist/node/startup/update-notice.cjs +0 -1
  71. package/dist/node/startup/update-notice.js +0 -2
  72. package/dist/node/startup/update-notice.js.map +0 -1
  73. package/dist/node/startup/version.cjs +0 -1
  74. package/dist/node/startup/version.js +0 -2
  75. package/dist/node/startup/version.js.map +0 -1
  76. package/dist/node/subagents/child-process-subagent-worker.cjs +0 -1
  77. package/dist/node/subagents/child-process-subagent-worker.d.ts +0 -1
  78. package/dist/node/subagents/child-process-subagent-worker.js +0 -2
  79. package/dist/node/subagents/child-process-subagent-worker.js.map +0 -1
  80. package/dist/node/user-local-direct-command.cjs +0 -1
  81. package/dist/node/user-local-direct-command.js +0 -2
  82. package/dist/node/user-local-direct-command.js.map +0 -1
  83. package/dist/node/utils/cli-args.cjs +0 -35
  84. package/dist/node/utils/cli-args.js +0 -36
  85. package/dist/node/utils/cli-args.js.map +0 -1
  86. package/dist/web/assets/index-BY1oA5Bi.js +0 -37
  87. package/dist/web/assets/index-Dt0ve2tr.js +0 -37
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robota-sdk/agent-cli",
3
- "version": "3.0.0-beta.77",
3
+ "version": "3.0.0-beta.79",
4
4
  "description": "AI coding assistant CLI built on Robota SDK",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,25 +37,30 @@
37
37
  "dist",
38
38
  "bin"
39
39
  ],
40
+ "comment:dependencies": "INFRA-028: agent-cli publishes as a SELF-CONTAINED bundle. ALL @robota-sdk workspace code (incl. the /workflows + dag-* chain) is bundled into dist (see devDependencies + tsdown.config.ts). Runtime `dependencies` therefore contain ONLY the third-party npm packages that the bundled closure imports — kept external so npm installs them from the public registry. Do NOT add any @robota-sdk edge here.",
40
41
  "dependencies": {
42
+ "@anthropic-ai/sdk": "^0.91.1",
43
+ "@google/genai": "^1.52.0",
44
+ "@marcbachmann/cel-js": "^7.5.3",
41
45
  "chalk": "^5.6.2",
42
46
  "cli-highlight": "^2.1.11",
47
+ "croner": "^10.0.1",
48
+ "fast-glob": "^3.3.3",
49
+ "ink": "^7.0.5",
50
+ "ink-select-input": "^6.2.0",
51
+ "ink-spinner": "^5.0.0",
52
+ "ink-text-input": "^6.0.0",
53
+ "jssha": "^3.3.1",
43
54
  "marked": "^9.1.6",
44
55
  "marked-terminal": "^7.3.0",
45
56
  "open": "^11.0.0",
57
+ "openai": "^4.104.0",
58
+ "p-limit": "^7.3.0",
59
+ "react": "19.2.4",
46
60
  "string-width": "^8.2.1",
47
61
  "ws": "^8.21.0",
48
- "@robota-sdk/agent-command": "3.0.0-beta.77",
49
- "@robota-sdk/agent-core": "3.0.0-beta.77",
50
- "@robota-sdk/agent-executor": "3.0.0-beta.77",
51
- "@robota-sdk/agent-framework": "3.0.0-beta.77",
52
- "@robota-sdk/agent-preset": "3.0.0-beta.77",
53
- "@robota-sdk/agent-transport": "3.0.0-beta.77",
54
- "@robota-sdk/agent-provider": "3.0.0-beta.77",
55
- "@robota-sdk/agent-session-analytics": "3.0.0-beta.77",
56
- "@robota-sdk/agent-transport-tui": "3.0.0-beta.77",
57
- "@robota-sdk/agent-subagent-runner": "3.0.0-beta.77",
58
- "@robota-sdk/agent-transport-ws": "3.0.0-beta.77"
62
+ "zod": "^3.25.76",
63
+ "zod-to-json-schema": "^3.24.6"
59
64
  },
60
65
  "devDependencies": {
61
66
  "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
@@ -66,9 +71,20 @@
66
71
  "tsx": "^4.22.4",
67
72
  "typescript": "^5.9.3",
68
73
  "vitest": "^3.2.6",
69
- "@robota-sdk/agent-command-workflows": "3.0.0-beta.1",
70
- "@robota-sdk/agent-interface-transport": "3.0.0-beta.77",
71
- "@robota-sdk/agent-provider-replay": "3.0.0-beta.77"
74
+ "@robota-sdk/agent-command": "3.0.0-beta.79",
75
+ "@robota-sdk/agent-command-workflows": "3.0.0-beta.3",
76
+ "@robota-sdk/agent-core": "3.0.0-beta.79",
77
+ "@robota-sdk/agent-executor": "3.0.0-beta.79",
78
+ "@robota-sdk/agent-framework": "3.0.0-beta.79",
79
+ "@robota-sdk/agent-interface-transport": "3.0.0-beta.79",
80
+ "@robota-sdk/agent-preset": "3.0.0-beta.79",
81
+ "@robota-sdk/agent-provider-replay": "3.0.0-beta.79",
82
+ "@robota-sdk/agent-provider": "3.0.0-beta.79",
83
+ "@robota-sdk/agent-session-analytics": "3.0.0-beta.79",
84
+ "@robota-sdk/agent-subagent-runner": "3.0.0-beta.79",
85
+ "@robota-sdk/agent-transport": "3.0.0-beta.79",
86
+ "@robota-sdk/agent-transport-tui": "3.0.0-beta.79",
87
+ "@robota-sdk/agent-transport-ws": "3.0.0-beta.79"
72
88
  },
73
89
  "keywords": [
74
90
  "ai",
@@ -1,2 +0,0 @@
1
- import{createAnthropicProviderDefinition as e}from"@robota-sdk/agent-provider-anthropic";import{createDeepSeekProviderDefinition as t}from"@robota-sdk/agent-provider-deepseek";import{createGemmaProviderDefinition as n}from"@robota-sdk/agent-provider-gemma";import{createGeminiProviderDefinition as r}from"@robota-sdk/agent-provider-gemini";import{createOpenAIProviderDefinition as i}from"@robota-sdk/agent-provider-openai";import{createQwenProviderDefinition as a}from"@robota-sdk/agent-provider-qwen";const o=[e(),i(),r(),n(),a(),t()];function s(e){return typeof e==`object`&&!!e}function c(e,t){return typeof e[t]==`string`}function l(e){return!s(e)||!c(e,`jobId`)||!s(e.request)||!c(e.request,`type`)||!c(e.request,`prompt`)||!s(e.agentDefinition)||!c(e.agentDefinition,`name`)||!c(e.agentDefinition,`systemPrompt`)||!s(e.parentConfig)||!s(e.parentContext)||!s(e.providerProfile)||!c(e.providerProfile,`type`)?!1:c(e.providerProfile,`model`)}function u(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`start`:return l(e.payload);case`send`:return c(e,`prompt`);case`cancel`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}function d(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`ready`:return!0;case`text_delta`:return c(e,`delta`);case`tool_start`:return c(e,`toolName`);case`tool_end`:return c(e,`toolName`)&&typeof e.success==`boolean`;case`result`:return c(e,`output`);case`error`:return c(e,`message`);case`cancelled`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}export{u as n,o as r,d as t};
2
- //# sourceMappingURL=child-process-subagent-ipc--Vp2dk1v.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"child-process-subagent-ipc--Vp2dk1v.js","names":[],"sources":["../../src/utils/provider-default-definitions.ts","../../src/subagents/child-process-subagent-ipc.ts"],"sourcesContent":["import { createAnthropicProviderDefinition } from '@robota-sdk/agent-provider-anthropic';\nimport { createDeepSeekProviderDefinition } from '@robota-sdk/agent-provider-deepseek';\nimport { createGemmaProviderDefinition } from '@robota-sdk/agent-provider-gemma';\nimport { createGeminiProviderDefinition } from '@robota-sdk/agent-provider-gemini';\nimport { createOpenAIProviderDefinition } from '@robota-sdk/agent-provider-openai';\nimport { createQwenProviderDefinition } from '@robota-sdk/agent-provider-qwen';\nimport type { IProviderDefinition } from './provider-definition.js';\n\nexport const DEFAULT_PROVIDER_DEFINITIONS: readonly IProviderDefinition[] = [\n createAnthropicProviderDefinition(),\n createOpenAIProviderDefinition(),\n createGeminiProviderDefinition(),\n createGemmaProviderDefinition(),\n createQwenProviderDefinition(),\n createDeepSeekProviderDefinition(),\n];\n","import type { TPermissionMode, TToolArgs } from '@robota-sdk/agent-core';\nimport type {\n ISerializableProviderProfile,\n ISubagentSpawnRequest,\n} from '@robota-sdk/agent-executor';\nimport type { IAgentDefinition, IInProcessSubagentRunnerDeps } from '@robota-sdk/agent-framework';\n\nexport type TSubagentWorkerWireValue = string | number | boolean | null | undefined | object;\n\ntype TSubagentWorkerWireRecord = Record<string, TSubagentWorkerWireValue>;\n\nexport interface ISubagentWorkerStartPayload {\n jobId: string;\n request: ISubagentSpawnRequest;\n agentDefinition: IAgentDefinition;\n parentConfig: IInProcessSubagentRunnerDeps['config'];\n parentContext: IInProcessSubagentRunnerDeps['context'];\n providerProfile: ISerializableProviderProfile;\n permissionMode?: TPermissionMode;\n logsDir?: string;\n}\n\nexport interface ISubagentWorkerStartMessage {\n type: 'start';\n payload: ISubagentWorkerStartPayload;\n}\n\nexport interface ISubagentWorkerSendMessage {\n type: 'send';\n prompt: string;\n}\n\nexport interface ISubagentWorkerCancelMessage {\n type: 'cancel';\n reason?: string;\n}\n\nexport type TSubagentWorkerParentMessage =\n | ISubagentWorkerStartMessage\n | ISubagentWorkerSendMessage\n | ISubagentWorkerCancelMessage;\n\nexport interface ISubagentWorkerReadyMessage {\n type: 'ready';\n}\n\nexport interface ISubagentWorkerTextDeltaMessage {\n type: 'text_delta';\n delta: string;\n}\n\nexport interface ISubagentWorkerToolStartMessage {\n type: 'tool_start';\n toolName: string;\n toolArgs?: TToolArgs;\n}\n\nexport interface ISubagentWorkerToolEndMessage {\n type: 'tool_end';\n toolName: string;\n success: boolean;\n}\n\nexport interface ISubagentWorkerResultMessage {\n type: 'result';\n output: string;\n}\n\nexport interface ISubagentWorkerErrorMessage {\n type: 'error';\n message: string;\n}\n\nexport interface ISubagentWorkerCancelledMessage {\n type: 'cancelled';\n reason?: string;\n}\n\nexport type TSubagentWorkerChildMessage =\n | ISubagentWorkerReadyMessage\n | ISubagentWorkerTextDeltaMessage\n | ISubagentWorkerToolStartMessage\n | ISubagentWorkerToolEndMessage\n | ISubagentWorkerResultMessage\n | ISubagentWorkerErrorMessage\n | ISubagentWorkerCancelledMessage;\n\nfunction isRecord(value: TSubagentWorkerWireValue): value is TSubagentWorkerWireRecord {\n return typeof value === 'object' && value !== null;\n}\n\nfunction hasString(value: TSubagentWorkerWireRecord, key: string): boolean {\n return typeof value[key] === 'string';\n}\n\nfunction isStartPayload(value: TSubagentWorkerWireValue): value is ISubagentWorkerStartPayload {\n if (!isRecord(value)) return false;\n if (!hasString(value, 'jobId')) return false;\n if (!isRecord(value.request)) return false;\n if (!hasString(value.request, 'type')) return false;\n if (!hasString(value.request, 'prompt')) return false;\n if (!isRecord(value.agentDefinition)) return false;\n if (!hasString(value.agentDefinition, 'name')) return false;\n if (!hasString(value.agentDefinition, 'systemPrompt')) return false;\n if (!isRecord(value.parentConfig)) return false;\n if (!isRecord(value.parentContext)) return false;\n if (!isRecord(value.providerProfile)) return false;\n if (!hasString(value.providerProfile, 'type')) return false;\n return hasString(value.providerProfile, 'model');\n}\n\nexport function isSubagentWorkerParentMessage(\n value: TSubagentWorkerWireValue,\n): value is TSubagentWorkerParentMessage {\n if (!isRecord(value) || !hasString(value, 'type')) return false;\n switch (value.type) {\n case 'start':\n return isStartPayload(value.payload);\n case 'send':\n return hasString(value, 'prompt');\n case 'cancel':\n return value.reason === undefined || typeof value.reason === 'string';\n default:\n return false;\n }\n}\n\nexport function isSubagentWorkerChildMessage(\n value: TSubagentWorkerWireValue,\n): value is TSubagentWorkerChildMessage {\n if (!isRecord(value) || !hasString(value, 'type')) return false;\n switch (value.type) {\n case 'ready':\n return true;\n case 'text_delta':\n return hasString(value, 'delta');\n case 'tool_start':\n return hasString(value, 'toolName');\n case 'tool_end':\n return hasString(value, 'toolName') && typeof value.success === 'boolean';\n case 'result':\n return hasString(value, 'output');\n case 'error':\n return hasString(value, 'message');\n case 'cancelled':\n return value.reason === undefined || typeof value.reason === 'string';\n default:\n return false;\n }\n}\n"],"mappings":"sfAQA,MAAa,EAA+D,CAC1E,EAAkC,EAClC,EAA+B,EAC/B,EAA+B,EAC/B,EAA8B,EAC9B,EAA6B,EAC7B,EAAiC,CACnC,ECwEA,SAAS,EAAS,EAAqE,CACrF,OAAO,OAAO,GAAU,YAAY,CACtC,CAEA,SAAS,EAAU,EAAkC,EAAsB,CACzE,OAAO,OAAO,EAAM,IAAS,QAC/B,CAEA,SAAS,EAAe,EAAuE,CAa7F,MAZI,CAAC,EAAS,CAAK,GACf,CAAC,EAAU,EAAO,OAAO,GACzB,CAAC,EAAS,EAAM,OAAO,GACvB,CAAC,EAAU,EAAM,QAAS,MAAM,GAChC,CAAC,EAAU,EAAM,QAAS,QAAQ,GAClC,CAAC,EAAS,EAAM,eAAe,GAC/B,CAAC,EAAU,EAAM,gBAAiB,MAAM,GACxC,CAAC,EAAU,EAAM,gBAAiB,cAAc,GAChD,CAAC,EAAS,EAAM,YAAY,GAC5B,CAAC,EAAS,EAAM,aAAa,GAC7B,CAAC,EAAS,EAAM,eAAe,GAC/B,CAAC,EAAU,EAAM,gBAAiB,MAAM,EAAU,GAC/C,EAAU,EAAM,gBAAiB,OAAO,CACjD,CAEA,SAAgB,EACd,EACuC,CACvC,GAAI,CAAC,EAAS,CAAK,GAAK,CAAC,EAAU,EAAO,MAAM,EAAG,MAAO,GAC1D,OAAQ,EAAM,KAAd,CACE,IAAK,QACH,OAAO,EAAe,EAAM,OAAO,EACrC,IAAK,OACH,OAAO,EAAU,EAAO,QAAQ,EAClC,IAAK,SACH,OAAO,EAAM,SAAW,IAAA,IAAa,OAAO,EAAM,QAAW,SAC/D,QACE,MAAO,EACX,CACF,CAEA,SAAgB,EACd,EACsC,CACtC,GAAI,CAAC,EAAS,CAAK,GAAK,CAAC,EAAU,EAAO,MAAM,EAAG,MAAO,GAC1D,OAAQ,EAAM,KAAd,CACE,IAAK,QACH,MAAO,GACT,IAAK,aACH,OAAO,EAAU,EAAO,OAAO,EACjC,IAAK,aACH,OAAO,EAAU,EAAO,UAAU,EACpC,IAAK,WACH,OAAO,EAAU,EAAO,UAAU,GAAK,OAAO,EAAM,SAAY,UAClE,IAAK,SACH,OAAO,EAAU,EAAO,QAAQ,EAClC,IAAK,QACH,OAAO,EAAU,EAAO,SAAS,EACnC,IAAK,YACH,OAAO,EAAM,SAAW,IAAA,IAAa,OAAO,EAAM,QAAW,SAC/D,QACE,MAAO,EACX,CACF"}
@@ -1 +0,0 @@
1
- let e=require(`@robota-sdk/agent-provider-anthropic`),t=require(`@robota-sdk/agent-provider-deepseek`),n=require(`@robota-sdk/agent-provider-gemma`),r=require(`@robota-sdk/agent-provider-gemini`),i=require(`@robota-sdk/agent-provider-openai`),a=require(`@robota-sdk/agent-provider-qwen`);const o=[(0,e.createAnthropicProviderDefinition)(),(0,i.createOpenAIProviderDefinition)(),(0,r.createGeminiProviderDefinition)(),(0,n.createGemmaProviderDefinition)(),(0,a.createQwenProviderDefinition)(),(0,t.createDeepSeekProviderDefinition)()];function s(e){return typeof e==`object`&&!!e}function c(e,t){return typeof e[t]==`string`}function l(e){return!s(e)||!c(e,`jobId`)||!s(e.request)||!c(e.request,`type`)||!c(e.request,`prompt`)||!s(e.agentDefinition)||!c(e.agentDefinition,`name`)||!c(e.agentDefinition,`systemPrompt`)||!s(e.parentConfig)||!s(e.parentContext)||!s(e.providerProfile)||!c(e.providerProfile,`type`)?!1:c(e.providerProfile,`model`)}function u(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`start`:return l(e.payload);case`send`:return c(e,`prompt`);case`cancel`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}function d(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`ready`:return!0;case`text_delta`:return c(e,`delta`);case`tool_start`:return c(e,`toolName`);case`tool_end`:return c(e,`toolName`)&&typeof e.success==`boolean`;case`result`:return c(e,`output`);case`error`:return c(e,`message`);case`cancelled`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
@@ -1 +0,0 @@
1
- let e=require(`@robota-sdk/agent-provider/anthropic`),t=require(`@robota-sdk/agent-provider/deepseek`),n=require(`@robota-sdk/agent-provider/gemma`),r=require(`@robota-sdk/agent-provider/gemini`),i=require(`@robota-sdk/agent-provider/openai`),a=require(`@robota-sdk/agent-provider/qwen`);const o=[(0,e.createAnthropicProviderDefinition)(),(0,i.createOpenAIProviderDefinition)(),(0,r.createGeminiProviderDefinition)(),(0,n.createGemmaProviderDefinition)(),(0,a.createQwenProviderDefinition)(),(0,t.createDeepSeekProviderDefinition)()];function s(e){return typeof e==`object`&&!!e}function c(e,t){return typeof e[t]==`string`}function l(e){return!s(e)||!c(e,`jobId`)||!s(e.request)||!c(e.request,`type`)||!c(e.request,`prompt`)||!s(e.agentDefinition)||!c(e.agentDefinition,`name`)||!c(e.agentDefinition,`systemPrompt`)||!s(e.parentConfig)||!s(e.parentContext)||!s(e.providerProfile)||!c(e.providerProfile,`type`)?!1:c(e.providerProfile,`model`)}function u(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`start`:return l(e.payload);case`send`:return c(e,`prompt`);case`cancel`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}function d(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`ready`:return!0;case`text_delta`:return c(e,`delta`);case`tool_start`:return c(e,`toolName`);case`tool_end`:return c(e,`toolName`)&&typeof e.success==`boolean`;case`result`:return c(e,`output`);case`error`:return c(e,`message`);case`cancelled`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
@@ -1,2 +0,0 @@
1
- import{createAnthropicProviderDefinition as e}from"@robota-sdk/agent-provider/anthropic";import{createDeepSeekProviderDefinition as t}from"@robota-sdk/agent-provider/deepseek";import{createGemmaProviderDefinition as n}from"@robota-sdk/agent-provider/gemma";import{createGeminiProviderDefinition as r}from"@robota-sdk/agent-provider/gemini";import{createOpenAIProviderDefinition as i}from"@robota-sdk/agent-provider/openai";import{createQwenProviderDefinition as a}from"@robota-sdk/agent-provider/qwen";const o=[e(),i(),r(),n(),a(),t()];function s(e){return typeof e==`object`&&!!e}function c(e,t){return typeof e[t]==`string`}function l(e){return!s(e)||!c(e,`jobId`)||!s(e.request)||!c(e.request,`type`)||!c(e.request,`prompt`)||!s(e.agentDefinition)||!c(e.agentDefinition,`name`)||!c(e.agentDefinition,`systemPrompt`)||!s(e.parentConfig)||!s(e.parentContext)||!s(e.providerProfile)||!c(e.providerProfile,`type`)?!1:c(e.providerProfile,`model`)}function u(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`start`:return l(e.payload);case`send`:return c(e,`prompt`);case`cancel`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}function d(e){if(!s(e)||!c(e,`type`))return!1;switch(e.type){case`ready`:return!0;case`text_delta`:return c(e,`delta`);case`tool_start`:return c(e,`toolName`);case`tool_end`:return c(e,`toolName`)&&typeof e.success==`boolean`;case`result`:return c(e,`output`);case`error`:return c(e,`message`);case`cancelled`:return e.reason===void 0||typeof e.reason==`string`;default:return!1}}export{u as n,o as r,d as t};
2
- //# sourceMappingURL=child-process-subagent-ipc-DVpVp43R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"child-process-subagent-ipc-DVpVp43R.js","names":[],"sources":["../../src/utils/provider-default-definitions.ts","../../src/subagents/child-process-subagent-ipc.ts"],"sourcesContent":["import { createAnthropicProviderDefinition } from '@robota-sdk/agent-provider/anthropic';\nimport { createDeepSeekProviderDefinition } from '@robota-sdk/agent-provider/deepseek';\nimport { createGemmaProviderDefinition } from '@robota-sdk/agent-provider/gemma';\nimport { createGeminiProviderDefinition } from '@robota-sdk/agent-provider/gemini';\nimport { createOpenAIProviderDefinition } from '@robota-sdk/agent-provider/openai';\nimport { createQwenProviderDefinition } from '@robota-sdk/agent-provider/qwen';\nimport type { IProviderDefinition } from './provider-definition.js';\n\nexport const DEFAULT_PROVIDER_DEFINITIONS: readonly IProviderDefinition[] = [\n createAnthropicProviderDefinition(),\n createOpenAIProviderDefinition(),\n createGeminiProviderDefinition(),\n createGemmaProviderDefinition(),\n createQwenProviderDefinition(),\n createDeepSeekProviderDefinition(),\n];\n","import type { TPermissionMode, TToolArgs } from '@robota-sdk/agent-core';\nimport type {\n ISerializableProviderProfile,\n ISubagentSpawnRequest,\n} from '@robota-sdk/agent-executor';\nimport type { IAgentDefinition, IInProcessSubagentRunnerDeps } from '@robota-sdk/agent-framework';\n\nexport type TSubagentWorkerWireValue = string | number | boolean | null | undefined | object;\n\ntype TSubagentWorkerWireRecord = Record<string, TSubagentWorkerWireValue>;\n\nexport interface ISubagentWorkerStartPayload {\n jobId: string;\n request: ISubagentSpawnRequest;\n agentDefinition: IAgentDefinition;\n parentConfig: IInProcessSubagentRunnerDeps['config'];\n parentContext: IInProcessSubagentRunnerDeps['context'];\n providerProfile: ISerializableProviderProfile;\n permissionMode?: TPermissionMode;\n logsDir?: string;\n}\n\nexport interface ISubagentWorkerStartMessage {\n type: 'start';\n payload: ISubagentWorkerStartPayload;\n}\n\nexport interface ISubagentWorkerSendMessage {\n type: 'send';\n prompt: string;\n}\n\nexport interface ISubagentWorkerCancelMessage {\n type: 'cancel';\n reason?: string;\n}\n\nexport type TSubagentWorkerParentMessage =\n | ISubagentWorkerStartMessage\n | ISubagentWorkerSendMessage\n | ISubagentWorkerCancelMessage;\n\nexport interface ISubagentWorkerReadyMessage {\n type: 'ready';\n}\n\nexport interface ISubagentWorkerTextDeltaMessage {\n type: 'text_delta';\n delta: string;\n}\n\nexport interface ISubagentWorkerToolStartMessage {\n type: 'tool_start';\n toolName: string;\n toolArgs?: TToolArgs;\n}\n\nexport interface ISubagentWorkerToolEndMessage {\n type: 'tool_end';\n toolName: string;\n success: boolean;\n}\n\nexport interface ISubagentWorkerResultMessage {\n type: 'result';\n output: string;\n}\n\nexport interface ISubagentWorkerErrorMessage {\n type: 'error';\n message: string;\n}\n\nexport interface ISubagentWorkerCancelledMessage {\n type: 'cancelled';\n reason?: string;\n}\n\nexport type TSubagentWorkerChildMessage =\n | ISubagentWorkerReadyMessage\n | ISubagentWorkerTextDeltaMessage\n | ISubagentWorkerToolStartMessage\n | ISubagentWorkerToolEndMessage\n | ISubagentWorkerResultMessage\n | ISubagentWorkerErrorMessage\n | ISubagentWorkerCancelledMessage;\n\nfunction isRecord(value: TSubagentWorkerWireValue): value is TSubagentWorkerWireRecord {\n return typeof value === 'object' && value !== null;\n}\n\nfunction hasString(value: TSubagentWorkerWireRecord, key: string): boolean {\n return typeof value[key] === 'string';\n}\n\nfunction isStartPayload(value: TSubagentWorkerWireValue): value is ISubagentWorkerStartPayload {\n if (!isRecord(value)) return false;\n if (!hasString(value, 'jobId')) return false;\n if (!isRecord(value.request)) return false;\n if (!hasString(value.request, 'type')) return false;\n if (!hasString(value.request, 'prompt')) return false;\n if (!isRecord(value.agentDefinition)) return false;\n if (!hasString(value.agentDefinition, 'name')) return false;\n if (!hasString(value.agentDefinition, 'systemPrompt')) return false;\n if (!isRecord(value.parentConfig)) return false;\n if (!isRecord(value.parentContext)) return false;\n if (!isRecord(value.providerProfile)) return false;\n if (!hasString(value.providerProfile, 'type')) return false;\n return hasString(value.providerProfile, 'model');\n}\n\nexport function isSubagentWorkerParentMessage(\n value: TSubagentWorkerWireValue,\n): value is TSubagentWorkerParentMessage {\n if (!isRecord(value) || !hasString(value, 'type')) return false;\n switch (value.type) {\n case 'start':\n return isStartPayload(value.payload);\n case 'send':\n return hasString(value, 'prompt');\n case 'cancel':\n return value.reason === undefined || typeof value.reason === 'string';\n default:\n return false;\n }\n}\n\nexport function isSubagentWorkerChildMessage(\n value: TSubagentWorkerWireValue,\n): value is TSubagentWorkerChildMessage {\n if (!isRecord(value) || !hasString(value, 'type')) return false;\n switch (value.type) {\n case 'ready':\n return true;\n case 'text_delta':\n return hasString(value, 'delta');\n case 'tool_start':\n return hasString(value, 'toolName');\n case 'tool_end':\n return hasString(value, 'toolName') && typeof value.success === 'boolean';\n case 'result':\n return hasString(value, 'output');\n case 'error':\n return hasString(value, 'message');\n case 'cancelled':\n return value.reason === undefined || typeof value.reason === 'string';\n default:\n return false;\n }\n}\n"],"mappings":"sfAQA,MAAa,EAA+D,CAC1E,EAAkC,EAClC,EAA+B,EAC/B,EAA+B,EAC/B,EAA8B,EAC9B,EAA6B,EAC7B,EAAiC,CACnC,ECwEA,SAAS,EAAS,EAAqE,CACrF,OAAO,OAAO,GAAU,YAAY,CACtC,CAEA,SAAS,EAAU,EAAkC,EAAsB,CACzE,OAAO,OAAO,EAAM,IAAS,QAC/B,CAEA,SAAS,EAAe,EAAuE,CAa7F,MAZI,CAAC,EAAS,CAAK,GACf,CAAC,EAAU,EAAO,OAAO,GACzB,CAAC,EAAS,EAAM,OAAO,GACvB,CAAC,EAAU,EAAM,QAAS,MAAM,GAChC,CAAC,EAAU,EAAM,QAAS,QAAQ,GAClC,CAAC,EAAS,EAAM,eAAe,GAC/B,CAAC,EAAU,EAAM,gBAAiB,MAAM,GACxC,CAAC,EAAU,EAAM,gBAAiB,cAAc,GAChD,CAAC,EAAS,EAAM,YAAY,GAC5B,CAAC,EAAS,EAAM,aAAa,GAC7B,CAAC,EAAS,EAAM,eAAe,GAC/B,CAAC,EAAU,EAAM,gBAAiB,MAAM,EAAU,GAC/C,EAAU,EAAM,gBAAiB,OAAO,CACjD,CAEA,SAAgB,EACd,EACuC,CACvC,GAAI,CAAC,EAAS,CAAK,GAAK,CAAC,EAAU,EAAO,MAAM,EAAG,MAAO,GAC1D,OAAQ,EAAM,KAAd,CACE,IAAK,QACH,OAAO,EAAe,EAAM,OAAO,EACrC,IAAK,OACH,OAAO,EAAU,EAAO,QAAQ,EAClC,IAAK,SACH,OAAO,EAAM,SAAW,IAAA,IAAa,OAAO,EAAM,QAAW,SAC/D,QACE,MAAO,EACX,CACF,CAEA,SAAgB,EACd,EACsC,CACtC,GAAI,CAAC,EAAS,CAAK,GAAK,CAAC,EAAU,EAAO,MAAM,EAAG,MAAO,GAC1D,OAAQ,EAAM,KAAd,CACE,IAAK,QACH,MAAO,GACT,IAAK,aACH,OAAO,EAAU,EAAO,OAAO,EACjC,IAAK,aACH,OAAO,EAAU,EAAO,UAAU,EACpC,IAAK,WACH,OAAO,EAAU,EAAO,UAAU,GAAK,OAAO,EAAM,SAAY,UAClE,IAAK,SACH,OAAO,EAAU,EAAO,QAAQ,EAClC,IAAK,QACH,OAAO,EAAU,EAAO,SAAS,EACnC,IAAK,YACH,OAAO,EAAM,SAAW,IAAA,IAAa,OAAO,EAAM,QAAW,SAC/D,QACE,MAAO,EACX,CACF"}
package/dist/node/cli.cjs DELETED
@@ -1 +0,0 @@
1
- const e=require(`./modes/print-mode.cjs`),t=require(`./modes/tui-mode.cjs`),n=require(`./startup/args-to-options.cjs`),r=require(`./startup/command-setup.cjs`),i=require(`./startup/config-phase.cjs`),a=require(`./utils/cli-args.cjs`),o=require(`./startup/preflight.cjs`),s=require(`./startup/provider-setup.cjs`),c=require(`./startup/session-setup.cjs`),l=require(`./startup/update-notice.cjs`),u=require(`./startup/version.cjs`),d=require(`./user-local-direct-command.cjs`);let f=require(`@robota-sdk/agent-framework`),p=require(`@robota-sdk/agent-transport`),m=require(`@robota-sdk/agent-transport/headless`);function h(){try{return a.parseCliArgs()}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}}async function g(a={}){let g=h(),_=u.readVersion(),v=new m.PrintTerminal,y=process.cwd();if((await o.handlePreflightCommands(g,{version:_,terminal:v,cwd:y})).handled)return;let b=n.toConfigPhaseOptions(g),x=n.toSessionRunOptions(g);try{if(await d.runUserLocalDirectCommandIfRequested(n.toUserLocalCommandOptions(g),y,v))return}catch(e){v.writeError(e instanceof Error?e.message:String(e)),process.exit(1)}let S=process.stdin.isTTY===!0&&process.stdout.isTTY===!0,C=r.createCommandSetup(y,a);if((await i.handleConfigPhase(y,b,C,v,S)).handled)return;let w=s.createProviderSetup(y,b,C),T=c.createSessionSetup(y,x),E=(0,f.createAgentRuntime)({cwd:y,provider:w.provider,commandModules:C.commandModules,commandHostAdapters:C.commandHostAdapters,reloadPluginCommandSource:C.reloadPluginCommandSource,subagentRunnerFactory:w.subagentRunnerFactory,sessionStore:T.sessionStore,transportRegistry:(0,p.createDefaultTransportRegistry)()});if(b.printMode){await e.runPrintMode(x,E);return}await t.runTuiMode({runtime:E,version:_,commandSetup:C,providerSetup:w,sessionSetup:T,sessionOpts:x,startupUpdateNotice:l.resolveStartupUpdateNotice(_,n.toStartupUpdatePolicyOptions(g))}),process.exit(0)}exports.startCli=g;
@@ -1,7 +0,0 @@
1
- import { IStartCliOptions } from "./startup/command-setup.js";
2
-
3
- //#region src/cli.d.ts
4
- declare function startCli(options?: IStartCliOptions): Promise<void>;
5
- //#endregion
6
- export { startCli };
7
- //# sourceMappingURL=cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","names":[],"sources":["../../src/cli.ts"],"mappings":";;;iBAqCsB,QAAA,CAAS,OAAA,GAAS,gBAAA,GAAwB,OAAO"}
package/dist/node/cli.js DELETED
@@ -1,2 +0,0 @@
1
- import{runPrintMode as e}from"./modes/print-mode.js";import{runTuiMode as t}from"./modes/tui-mode.js";import{toConfigPhaseOptions as n,toSessionRunOptions as r,toStartupUpdatePolicyOptions as i,toUserLocalCommandOptions as a}from"./startup/args-to-options.js";import{createCommandSetup as o}from"./startup/command-setup.js";import{handleConfigPhase as s}from"./startup/config-phase.js";import{parseCliArgs as c}from"./utils/cli-args.js";import{handlePreflightCommands as l}from"./startup/preflight.js";import{createProviderSetup as u}from"./startup/provider-setup.js";import{createSessionSetup as d}from"./startup/session-setup.js";import{resolveStartupUpdateNotice as f}from"./startup/update-notice.js";import{readVersion as p}from"./startup/version.js";import{runUserLocalDirectCommandIfRequested as m}from"./user-local-direct-command.js";import{createAgentRuntime as h}from"@robota-sdk/agent-framework";import{createDefaultTransportRegistry as g}from"@robota-sdk/agent-transport";import{PrintTerminal as _}from"@robota-sdk/agent-transport/headless";function v(){try{return c()}catch(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}}async function y(c={}){let y=v(),b=p(),x=new _,S=process.cwd();if((await l(y,{version:b,terminal:x,cwd:S})).handled)return;let C=n(y),w=r(y);try{if(await m(a(y),S,x))return}catch(e){x.writeError(e instanceof Error?e.message:String(e)),process.exit(1)}let T=process.stdin.isTTY===!0&&process.stdout.isTTY===!0,E=o(S,c);if((await s(S,C,E,x,T)).handled)return;let D=u(S,C,E),O=d(S,w),k=h({cwd:S,provider:D.provider,commandModules:E.commandModules,commandHostAdapters:E.commandHostAdapters,reloadPluginCommandSource:E.reloadPluginCommandSource,subagentRunnerFactory:D.subagentRunnerFactory,sessionStore:O.sessionStore,transportRegistry:g()});if(C.printMode){await e(w,k);return}await t({runtime:k,version:b,commandSetup:E,providerSetup:D,sessionSetup:O,sessionOpts:w,startupUpdateNotice:f(b,i(y))}),process.exit(0)}export{y as startCli};
2
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","names":[],"sources":["../../src/cli.ts"],"sourcesContent":["import { createAgentRuntime } from '@robota-sdk/agent-framework';\nimport { createDefaultTransportRegistry } from '@robota-sdk/agent-transport';\nimport { PrintTerminal } from '@robota-sdk/agent-transport/headless';\n\nimport { runPrintMode } from './modes/print-mode.js';\nimport { runTuiMode } from './modes/tui-mode.js';\nimport {\n toConfigPhaseOptions,\n toSessionRunOptions,\n toUserLocalCommandOptions,\n toStartupUpdatePolicyOptions,\n} from './startup/args-to-options.js';\nimport { createCommandSetup } from './startup/command-setup.js';\nimport { handleConfigPhase } from './startup/config-phase.js';\nimport { handlePreflightCommands } from './startup/preflight.js';\nimport { createProviderSetup } from './startup/provider-setup.js';\nimport { createSessionSetup } from './startup/session-setup.js';\nimport { resolveStartupUpdateNotice } from './startup/update-notice.js';\nimport { readVersion } from './startup/version.js';\nimport { runUserLocalDirectCommandIfRequested } from './user-local-direct-command.js';\nimport { parseCliArgs } from './utils/cli-args.js';\n\nimport type { IStartCliOptions } from './startup/command-setup.js';\nimport type { IParsedCliArgs } from './utils/cli-args.js';\n\nexport type { IStartCliOptions };\n\nfunction parseArgsOrExit(): IParsedCliArgs {\n try {\n return parseCliArgs();\n } catch (error) {\n // allow-fallback: argument validation errors are terminal — exit is the correct response\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exit(1);\n }\n}\n\nexport async function startCli(options: IStartCliOptions = {}): Promise<void> {\n const args = parseArgsOrExit();\n const version = readVersion();\n const terminal = new PrintTerminal();\n\n const cwd = process.cwd();\n\n // Layer 0: pre-flight — single point for all early-exit commands\n if ((await handlePreflightCommands(args, { version, terminal, cwd })).handled) return;\n\n // Layer 1: IParsedCliArgs → typed option objects (boundary)\n const configPhaseOpts = toConfigPhaseOptions(args);\n const sessionOpts = toSessionRunOptions(args);\n\n try {\n if (await runUserLocalDirectCommandIfRequested(toUserLocalCommandOptions(args), cwd, terminal))\n return;\n } catch (error) {\n // allow-fallback: user-local command failure is terminal — exit is the correct response\n terminal.writeError(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n\n // Layer 2: sub-layer assembly (same-level grouping)\n const isTTY = process.stdin.isTTY === true && process.stdout.isTTY === true;\n const commandSetup = createCommandSetup(cwd, options);\n const configPhase = await handleConfigPhase(cwd, configPhaseOpts, commandSetup, terminal, isTTY);\n if (configPhase.handled) return;\n\n const providerSetup = createProviderSetup(cwd, configPhaseOpts, commandSetup);\n const sessionSetup = createSessionSetup(cwd, sessionOpts);\n\n // Layer 3: runtime assembly\n const runtime = createAgentRuntime({\n cwd,\n provider: providerSetup.provider,\n commandModules: commandSetup.commandModules,\n commandHostAdapters: commandSetup.commandHostAdapters,\n reloadPluginCommandSource: commandSetup.reloadPluginCommandSource,\n subagentRunnerFactory: providerSetup.subagentRunnerFactory,\n sessionStore: sessionSetup.sessionStore,\n transportRegistry: createDefaultTransportRegistry(),\n });\n\n // Layer 4: mode / transport\n if (configPhaseOpts.printMode) {\n await runPrintMode(sessionOpts, runtime);\n return;\n }\n\n await runTuiMode({\n runtime,\n version,\n commandSetup,\n providerSetup,\n sessionSetup,\n sessionOpts,\n startupUpdateNotice: resolveStartupUpdateNotice(version, toStartupUpdatePolicyOptions(args)),\n });\n process.exit(0);\n}\n"],"mappings":"4hCA2BA,SAAS,GAAkC,CACzC,GAAI,CACF,OAAO,EAAa,CACtB,OAAS,EAAO,CAEd,QAAQ,OAAO,MAAM,GAAG,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAAE,GAAG,EAClF,QAAQ,KAAK,CAAC,CAChB,CACF,CAEA,eAAsB,EAAS,EAA4B,CAAC,EAAkB,CAC5E,IAAM,EAAO,EAAgB,EACvB,EAAU,EAAY,EACtB,EAAW,IAAI,EAEf,EAAM,QAAQ,IAAI,EAGxB,IAAK,MAAM,EAAwB,EAAM,CAAE,UAAS,WAAU,KAAI,CAAC,GAAG,QAAS,OAG/E,IAAM,EAAkB,EAAqB,CAAI,EAC3C,EAAc,EAAoB,CAAI,EAE5C,GAAI,CACF,GAAI,MAAM,EAAqC,EAA0B,CAAI,EAAG,EAAK,CAAQ,EAC3F,MACJ,OAAS,EAAO,CAEd,EAAS,WAAW,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,CAAC,EAC1E,QAAQ,KAAK,CAAC,CAChB,CAGA,IAAM,EAAQ,QAAQ,MAAM,QAAU,IAAQ,QAAQ,OAAO,QAAU,GACjE,EAAe,EAAmB,EAAK,CAAO,EAEpD,IAAI,MADsB,EAAkB,EAAK,EAAiB,EAAc,EAAU,CAAK,GAC/E,QAAS,OAEzB,IAAM,EAAgB,EAAoB,EAAK,EAAiB,CAAY,EACtE,EAAe,EAAmB,EAAK,CAAW,EAGlD,EAAU,EAAmB,CACjC,MACA,SAAU,EAAc,SACxB,eAAgB,EAAa,eAC7B,oBAAqB,EAAa,oBAClC,0BAA2B,EAAa,0BACxC,sBAAuB,EAAc,sBACrC,aAAc,EAAa,aAC3B,kBAAmB,EAA+B,CACpD,CAAC,EAGD,GAAI,EAAgB,UAAW,CAC7B,MAAM,EAAa,EAAa,CAAO,EACvC,MACF,CAEA,MAAM,EAAW,CACf,UACA,UACA,eACA,gBACA,eACA,cACA,oBAAqB,EAA2B,EAAS,EAA6B,CAAI,CAAC,CAC7F,CAAC,EACD,QAAQ,KAAK,CAAC,CAChB"}
@@ -1 +0,0 @@
1
- exports.AGENT_CLI_NAME=`robota-cli`;
@@ -1,2 +0,0 @@
1
- const e=`robota-cli`;export{e as AGENT_CLI_NAME};
2
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","names":[],"sources":["../../src/constants.ts"],"sourcesContent":["export const AGENT_CLI_NAME = 'robota-cli';\n"],"mappings":"AAAA,MAAa,EAAiB"}
@@ -1,32 +0,0 @@
1
- let e=require(`@robota-sdk/agent-transport/headless`),t=require(`node:fs`),n=require(`node:path`);const r={permissions:{allow:[`Read(.robota/**)`,`Read(.claude/**)`,`Read(.agents/**)`],deny:[]}};function i(e){let r=(0,n.join)(e,`settings.json`);if(!(0,t.existsSync)(r))return{};let i=(0,t.readFileSync)(r,`utf8`);return JSON.parse(i)}async function a(t){let n=await(0,e.promptInput)(`${t} [y/N] `);return n.toLowerCase()===`y`||n.toLowerCase()===`yes`}async function o(e,o){o.writeLine(``),o.writeLine(`Robota project initialization`),o.writeLine(`─`.repeat(40));let s=(0,n.join)(e,`.robota`),c=(0,n.join)(s,`settings.json`),l=(0,n.join)(e,`AGENTS.md`),u=(0,n.join)(e,`.claude`),d=(0,t.existsSync)(u),f=(0,t.existsSync)(c),p=(0,t.existsSync)(l);if(f&&p&&(o.writeLine(``),o.writeLine(`Both AGENTS.md and .robota/settings.json already exist.`),!await a(`Overwrite existing files?`))){o.writeLine(`Init cancelled.`);return}let m={...r};if(d&&(o.writeLine(``),o.writeLine(`Detected .claude/ directory (Claude Code configuration).`),await a(`Migrate Claude Code settings to .robota/?`))){let e=i(u),t=e.permissions;m={...e,permissions:{...typeof e.permissions==`object`&&e.permissions!==null?e.permissions:{},allow:[...r.permissions.allow,...t?.allow??[]],deny:t?.deny??[]}},o.writeLine(`Settings imported from .claude/settings.json.`)}(0,t.mkdirSync)(s,{recursive:!0}),(0,t.writeFileSync)(c,JSON.stringify(m,null,2)+`
2
- `,`utf8`),o.writeLine(``),o.writeLine(`Created: .robota/settings.json`),(0,t.writeFileSync)(l,`# AGENTS.md — Project Agent Guidelines
3
-
4
- This file guides the AI agent working in this project. Customize it for your project.
5
-
6
- ## Project Overview
7
-
8
- <!-- Describe your project's purpose, tech stack, and key conventions -->
9
-
10
- ## Common Commands
11
-
12
- \`\`\`bash
13
- # Install dependencies
14
- npm install
15
-
16
- # Run tests
17
- npm test
18
-
19
- # Build
20
- npm run build
21
- \`\`\`
22
-
23
- ## Coding Conventions
24
-
25
- - Language: <!-- e.g. TypeScript strict mode -->
26
- - Test framework: <!-- e.g. Vitest, Jest -->
27
- - Linting: <!-- e.g. ESLint with prettier -->
28
-
29
- ## Important Notes
30
-
31
- <!-- Anything the agent should know before making changes -->
32
- `,`utf8`),o.writeLine(`Created: AGENTS.md`),o.writeLine(``),o.writeLine(`Initialization complete.`),o.writeLine(``),o.writeLine(`Next steps:`),o.writeLine(` 1. Edit AGENTS.md to describe your project conventions`),o.writeLine(" 2. Run `robota --configure` to set up your AI provider"),o.writeLine(" 3. Run `robota` to start the assistant"),o.writeLine(``)}exports.runInitCommand=o;
@@ -1,33 +0,0 @@
1
- import{promptInput as e}from"@robota-sdk/agent-transport/headless";import{existsSync as t,mkdirSync as n,readFileSync as r,writeFileSync as i}from"node:fs";import{join as a}from"node:path";const o={permissions:{allow:[`Read(.robota/**)`,`Read(.claude/**)`,`Read(.agents/**)`],deny:[]}};function s(e){let n=a(e,`settings.json`);if(!t(n))return{};let i=r(n,`utf8`);return JSON.parse(i)}async function c(t){let n=await e(`${t} [y/N] `);return n.toLowerCase()===`y`||n.toLowerCase()===`yes`}async function l(e,r){r.writeLine(``),r.writeLine(`Robota project initialization`),r.writeLine(`─`.repeat(40));let l=a(e,`.robota`),u=a(l,`settings.json`),d=a(e,`AGENTS.md`),f=a(e,`.claude`),p=t(f),m=t(u),h=t(d);if(m&&h&&(r.writeLine(``),r.writeLine(`Both AGENTS.md and .robota/settings.json already exist.`),!await c(`Overwrite existing files?`))){r.writeLine(`Init cancelled.`);return}let g={...o};if(p&&(r.writeLine(``),r.writeLine(`Detected .claude/ directory (Claude Code configuration).`),await c(`Migrate Claude Code settings to .robota/?`))){let e=s(f),t=e.permissions;g={...e,permissions:{...typeof e.permissions==`object`&&e.permissions!==null?e.permissions:{},allow:[...o.permissions.allow,...t?.allow??[]],deny:t?.deny??[]}},r.writeLine(`Settings imported from .claude/settings.json.`)}n(l,{recursive:!0}),i(u,JSON.stringify(g,null,2)+`
2
- `,`utf8`),r.writeLine(``),r.writeLine(`Created: .robota/settings.json`),i(d,`# AGENTS.md — Project Agent Guidelines
3
-
4
- This file guides the AI agent working in this project. Customize it for your project.
5
-
6
- ## Project Overview
7
-
8
- <!-- Describe your project's purpose, tech stack, and key conventions -->
9
-
10
- ## Common Commands
11
-
12
- \`\`\`bash
13
- # Install dependencies
14
- npm install
15
-
16
- # Run tests
17
- npm test
18
-
19
- # Build
20
- npm run build
21
- \`\`\`
22
-
23
- ## Coding Conventions
24
-
25
- - Language: <!-- e.g. TypeScript strict mode -->
26
- - Test framework: <!-- e.g. Vitest, Jest -->
27
- - Linting: <!-- e.g. ESLint with prettier -->
28
-
29
- ## Important Notes
30
-
31
- <!-- Anything the agent should know before making changes -->
32
- `,`utf8`),r.writeLine(`Created: AGENTS.md`),r.writeLine(``),r.writeLine(`Initialization complete.`),r.writeLine(``),r.writeLine(`Next steps:`),r.writeLine(` 1. Edit AGENTS.md to describe your project conventions`),r.writeLine(" 2. Run `robota --configure` to set up your AI provider"),r.writeLine(" 3. Run `robota` to start the assistant"),r.writeLine(``)}export{l as runInitCommand};
33
- //# sourceMappingURL=init-command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-command.js","names":[],"sources":["../../../src/init/init-command.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport { promptInput } from '@robota-sdk/agent-transport/headless';\n\nimport type { ITerminalOutput } from '@robota-sdk/agent-core';\n\nconst AGENTS_MD_TEMPLATE = `# AGENTS.md — Project Agent Guidelines\n\nThis file guides the AI agent working in this project. Customize it for your project.\n\n## Project Overview\n\n<!-- Describe your project's purpose, tech stack, and key conventions -->\n\n## Common Commands\n\n\\`\\`\\`bash\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Build\nnpm run build\n\\`\\`\\`\n\n## Coding Conventions\n\n- Language: <!-- e.g. TypeScript strict mode -->\n- Test framework: <!-- e.g. Vitest, Jest -->\n- Linting: <!-- e.g. ESLint with prettier -->\n\n## Important Notes\n\n<!-- Anything the agent should know before making changes -->\n`;\n\nconst SETTINGS_TEMPLATE = {\n permissions: {\n allow: ['Read(.robota/**)', 'Read(.claude/**)', 'Read(.agents/**)'],\n deny: [],\n },\n};\n\nfunction readClaudeSettings(claudeDir: string): Record<string, unknown> {\n const settingsPath = join(claudeDir, 'settings.json');\n if (!existsSync(settingsPath)) return {};\n const raw = readFileSync(settingsPath, 'utf8');\n return JSON.parse(raw) as Record<string, unknown>;\n}\n\nasync function askYesNo(question: string): Promise<boolean> {\n const answer = await promptInput(`${question} [y/N] `);\n return answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';\n}\n\nexport async function runInitCommand(cwd: string, terminal: ITerminalOutput): Promise<void> {\n terminal.writeLine('');\n terminal.writeLine('Robota project initialization');\n terminal.writeLine('─'.repeat(40));\n\n const robotaDir = join(cwd, '.robota');\n const settingsPath = join(robotaDir, 'settings.json');\n const agentsMdPath = join(cwd, 'AGENTS.md');\n const claudeDir = join(cwd, '.claude');\n const hasClaudeDir = existsSync(claudeDir);\n\n const hasSettings = existsSync(settingsPath);\n const hasAgentsMd = existsSync(agentsMdPath);\n\n if (hasSettings && hasAgentsMd) {\n terminal.writeLine('');\n terminal.writeLine('Both AGENTS.md and .robota/settings.json already exist.');\n const overwrite = await askYesNo('Overwrite existing files?');\n if (!overwrite) {\n terminal.writeLine('Init cancelled.');\n return;\n }\n }\n\n let settingsData: Record<string, unknown> = { ...SETTINGS_TEMPLATE };\n\n if (hasClaudeDir) {\n terminal.writeLine('');\n terminal.writeLine('Detected .claude/ directory (Claude Code configuration).');\n const migrate = await askYesNo('Migrate Claude Code settings to .robota/?');\n if (migrate) {\n const claudeSettings = readClaudeSettings(claudeDir);\n const claudePerms = claudeSettings.permissions as\n | { allow?: string[]; deny?: string[] }\n | undefined;\n settingsData = {\n ...claudeSettings,\n permissions: {\n ...(typeof claudeSettings.permissions === 'object' && claudeSettings.permissions !== null\n ? (claudeSettings.permissions as Record<string, unknown>)\n : {}),\n allow: [...SETTINGS_TEMPLATE.permissions.allow, ...(claudePerms?.allow ?? [])],\n deny: claudePerms?.deny ?? [],\n },\n };\n terminal.writeLine('Settings imported from .claude/settings.json.');\n }\n }\n\n mkdirSync(robotaDir, { recursive: true });\n writeFileSync(settingsPath, JSON.stringify(settingsData, null, 2) + '\\n', 'utf8');\n terminal.writeLine('');\n terminal.writeLine('Created: .robota/settings.json');\n\n writeFileSync(agentsMdPath, AGENTS_MD_TEMPLATE, 'utf8');\n terminal.writeLine('Created: AGENTS.md');\n\n terminal.writeLine('');\n terminal.writeLine('Initialization complete.');\n terminal.writeLine('');\n terminal.writeLine('Next steps:');\n terminal.writeLine(' 1. Edit AGENTS.md to describe your project conventions');\n terminal.writeLine(' 2. Run `robota --configure` to set up your AI provider');\n terminal.writeLine(' 3. Run `robota` to start the assistant');\n terminal.writeLine('');\n}\n"],"mappings":"6LAOA,MAgCM,EAAoB,CACxB,YAAa,CACX,MAAO,CAAC,mBAAoB,mBAAoB,kBAAkB,EAClE,KAAM,CAAC,CACT,CACF,EAEA,SAAS,EAAmB,EAA4C,CACtE,IAAM,EAAe,EAAK,EAAW,eAAe,EACpD,GAAI,CAAC,EAAW,CAAY,EAAG,MAAO,CAAC,EACvC,IAAM,EAAM,EAAa,EAAc,MAAM,EAC7C,OAAO,KAAK,MAAM,CAAG,CACvB,CAEA,eAAe,EAAS,EAAoC,CAC1D,IAAM,EAAS,MAAM,EAAY,GAAG,EAAS,QAAQ,EACrD,OAAO,EAAO,YAAY,IAAM,KAAO,EAAO,YAAY,IAAM,KAClE,CAEA,eAAsB,EAAe,EAAa,EAA0C,CAC1F,EAAS,UAAU,EAAE,EACrB,EAAS,UAAU,+BAA+B,EAClD,EAAS,UAAU,IAAI,OAAO,EAAE,CAAC,EAEjC,IAAM,EAAY,EAAK,EAAK,SAAS,EAC/B,EAAe,EAAK,EAAW,eAAe,EAC9C,EAAe,EAAK,EAAK,WAAW,EACpC,EAAY,EAAK,EAAK,SAAS,EAC/B,EAAe,EAAW,CAAS,EAEnC,EAAc,EAAW,CAAY,EACrC,EAAc,EAAW,CAAY,EAE3C,GAAI,GAAe,IACjB,EAAS,UAAU,EAAE,EACrB,EAAS,UAAU,yDAAyD,EAExE,CAAC,MADmB,EAAS,2BAA2B,GAC5C,CACd,EAAS,UAAU,iBAAiB,EACpC,MACF,CAGF,IAAI,EAAwC,CAAE,GAAG,CAAkB,EAEnE,GAAI,IACF,EAAS,UAAU,EAAE,EACrB,EAAS,UAAU,0DAA0D,EAEzE,MADkB,EAAS,2CAA2C,GAC7D,CACX,IAAM,EAAiB,EAAmB,CAAS,EAC7C,EAAc,EAAe,YAGnC,EAAe,CACb,GAAG,EACH,YAAa,CACX,GAAI,OAAO,EAAe,aAAgB,UAAY,EAAe,cAAgB,KAChF,EAAe,YAChB,CAAC,EACL,MAAO,CAAC,GAAG,EAAkB,YAAY,MAAO,GAAI,GAAa,OAAS,CAAC,CAAE,EAC7E,KAAM,GAAa,MAAQ,CAAC,CAC9B,CACF,EACA,EAAS,UAAU,+CAA+C,CACpE,CAGF,EAAU,EAAW,CAAE,UAAW,EAAK,CAAC,EACxC,EAAc,EAAc,KAAK,UAAU,EAAc,KAAM,CAAC,EAAI;EAAM,MAAM,EAChF,EAAS,UAAU,EAAE,EACrB,EAAS,UAAU,gCAAgC,EAEnD,EAAc,EAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAoB,MAAM,EACtD,EAAS,UAAU,oBAAoB,EAEvC,EAAS,UAAU,EAAE,EACrB,EAAS,UAAU,0BAA0B,EAC7C,EAAS,UAAU,EAAE,EACrB,EAAS,UAAU,aAAa,EAChC,EAAS,UAAU,0DAA0D,EAC7E,EAAS,UAAU,0DAA0D,EAC7E,EAAS,UAAU,0CAA0C,EAC7D,EAAS,UAAU,EAAE,CACvB"}
@@ -1,6 +0,0 @@
1
- const e=require(`../startup/append-system-prompt.cjs`),t=require(`../constants.cjs`),n=require(`./shell-exec.cjs`);let r=require(`@robota-sdk/agent-transport/headless`);async function i(e){let t=e.positional.join(` `).trim();if(!t&&!process.stdin.isTTY){let e=[];for await(let t of process.stdin)e.push(t);t=Buffer.concat(e).toString(`utf-8`).trim()}return t||(process.stderr.write(`Print mode (-p) requires a prompt argument.
2
- `),process.exit(1)),t}async function a(a,o){let s=await i(a);a.dryRun&&process.stdout.write(`DRY RUN — plan mode enabled. No files will be modified.
3
-
4
- `);let c=[];a.dryRun&&c.push(`You are in dry-run (plan) mode. Analyze the request and describe step by step what you would do, without executing any write or edit operations. Format your response as a numbered action plan.`);let l=e.buildAppendSystemPrompt(o.cwd,a);l&&c.push(l);let u=c.length>0?c.join(`
5
-
6
- `):void 0,d=n.createShellExec(),f=o.createSession({permissionMode:a.permissionMode??`bypassPermissions`,maxTurns:a.maxTurns,sessionStore:a.noSessionPersistence?void 0:o.sessionStore,sessionName:a.sessionName,bare:a.bare||void 0,allowedTools:a.allowedTools?a.allowedTools.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):void 0,appendSystemPrompt:u,systemPrompt:a.systemPrompt,shellExec:d,agentName:t.AGENT_CLI_NAME}),p=(0,r.createHeadlessTransport)({outputFormat:a.outputFormat??`text`,prompt:s});f.attachTransport(p),await p.start(),await f.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`}),process.exit(p.getExitCode())}exports.runPrintMode=a;
@@ -1,7 +0,0 @@
1
- import{buildAppendSystemPrompt as e}from"../startup/append-system-prompt.js";import{AGENT_CLI_NAME as t}from"../constants.js";import{createShellExec as n}from"./shell-exec.js";import{createHeadlessTransport as r}from"@robota-sdk/agent-transport/headless";async function i(e){let t=e.positional.join(` `).trim();if(!t&&!process.stdin.isTTY){let e=[];for await(let t of process.stdin)e.push(t);t=Buffer.concat(e).toString(`utf-8`).trim()}return t||(process.stderr.write(`Print mode (-p) requires a prompt argument.
2
- `),process.exit(1)),t}async function a(a,o){let s=await i(a);a.dryRun&&process.stdout.write(`DRY RUN — plan mode enabled. No files will be modified.
3
-
4
- `);let c=[];a.dryRun&&c.push(`You are in dry-run (plan) mode. Analyze the request and describe step by step what you would do, without executing any write or edit operations. Format your response as a numbered action plan.`);let l=e(o.cwd,a);l&&c.push(l);let u=c.length>0?c.join(`
5
-
6
- `):void 0,d=n(),f=o.createSession({permissionMode:a.permissionMode??`bypassPermissions`,maxTurns:a.maxTurns,sessionStore:a.noSessionPersistence?void 0:o.sessionStore,sessionName:a.sessionName,bare:a.bare||void 0,allowedTools:a.allowedTools?a.allowedTools.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):void 0,appendSystemPrompt:u,systemPrompt:a.systemPrompt,shellExec:d,agentName:t}),p=r({outputFormat:a.outputFormat??`text`,prompt:s});f.attachTransport(p),await p.start(),await f.shutdown({reason:`prompt_input_exit`,message:`Headless transport complete`}),process.exit(p.getExitCode())}export{a as runPrintMode};
7
- //# sourceMappingURL=print-mode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print-mode.js","names":[],"sources":["../../../src/modes/print-mode.ts"],"sourcesContent":["import { createHeadlessTransport } from '@robota-sdk/agent-transport/headless';\n\nimport { buildAppendSystemPrompt } from '../startup/append-system-prompt.js';\nimport { AGENT_CLI_NAME } from '../constants.js';\nimport { createShellExec } from './shell-exec.js';\n\nimport type { ISessionRunOptions } from '../startup/args-to-options.js';\nimport type { IAgentRuntime } from '@robota-sdk/agent-framework';\n\nasync function resolvePrompt(opts: ISessionRunOptions): Promise<string> {\n let prompt = opts.positional.join(' ').trim();\n\n if (!prompt && !process.stdin.isTTY) {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(chunk as Buffer);\n }\n prompt = Buffer.concat(chunks).toString('utf-8').trim();\n }\n\n if (!prompt) {\n process.stderr.write('Print mode (-p) requires a prompt argument.\\n');\n process.exit(1);\n }\n\n return prompt;\n}\n\nconst DRY_RUN_SYSTEM_PROMPT =\n 'You are in dry-run (plan) mode. Analyze the request and describe step by step what you would do, without executing any write or edit operations. Format your response as a numbered action plan.';\n\nexport async function runPrintMode(\n opts: ISessionRunOptions,\n runtime: IAgentRuntime,\n): Promise<void> {\n const prompt = await resolvePrompt(opts);\n\n if (opts.dryRun) {\n process.stdout.write('DRY RUN — plan mode enabled. No files will be modified.\\n\\n');\n }\n\n const appendSystemPromptParts: string[] = [];\n if (opts.dryRun) appendSystemPromptParts.push(DRY_RUN_SYSTEM_PROMPT);\n const baseAppend = buildAppendSystemPrompt(runtime.cwd, opts);\n if (baseAppend) appendSystemPromptParts.push(baseAppend);\n const appendSystemPrompt =\n appendSystemPromptParts.length > 0 ? appendSystemPromptParts.join('\\n\\n') : undefined;\n const shellExec = createShellExec();\n\n const session = runtime.createSession({\n permissionMode: opts.permissionMode ?? 'bypassPermissions',\n maxTurns: opts.maxTurns,\n sessionStore: opts.noSessionPersistence ? undefined : runtime.sessionStore,\n sessionName: opts.sessionName,\n bare: opts.bare || undefined,\n allowedTools: opts.allowedTools\n ? opts.allowedTools\n .split(',')\n .map((t) => t.trim())\n .filter((t) => t.length > 0)\n : undefined,\n appendSystemPrompt,\n systemPrompt: opts.systemPrompt,\n shellExec,\n agentName: AGENT_CLI_NAME,\n });\n\n const transport = createHeadlessTransport({\n outputFormat: opts.outputFormat ?? 'text',\n prompt,\n });\n session.attachTransport(transport);\n await transport.start();\n await session.shutdown({ reason: 'prompt_input_exit', message: 'Headless transport complete' });\n process.exit(transport.getExitCode());\n}\n"],"mappings":"+PASA,eAAe,EAAc,EAA2C,CACtE,IAAI,EAAS,EAAK,WAAW,KAAK,GAAG,EAAE,KAAK,EAE5C,GAAI,CAAC,GAAU,CAAC,QAAQ,MAAM,MAAO,CACnC,IAAM,EAAmB,CAAC,EAC1B,UAAW,IAAM,KAAS,QAAQ,MAChC,EAAO,KAAK,CAAe,EAE7B,EAAS,OAAO,OAAO,CAAM,EAAE,SAAS,OAAO,EAAE,KAAK,CACxD,CAOA,OALK,IACH,QAAQ,OAAO,MAAM;CAA+C,EACpE,QAAQ,KAAK,CAAC,GAGT,CACT,CAKA,eAAsB,EACpB,EACA,EACe,CACf,IAAM,EAAS,MAAM,EAAc,CAAI,EAEnC,EAAK,QACP,QAAQ,OAAO,MAAM;;CAA6D,EAGpF,IAAM,EAAoC,CAAC,EACvC,EAAK,QAAQ,EAAwB,KAAK,kMAAqB,EACnE,IAAM,EAAa,EAAwB,EAAQ,IAAK,CAAI,EACxD,GAAY,EAAwB,KAAK,CAAU,EACvD,IAAM,EACJ,EAAwB,OAAS,EAAI,EAAwB,KAAK;;CAAM,EAAI,IAAA,GACxE,EAAY,EAAgB,EAE5B,EAAU,EAAQ,cAAc,CACpC,eAAgB,EAAK,gBAAkB,oBACvC,SAAU,EAAK,SACf,aAAc,EAAK,qBAAuB,IAAA,GAAY,EAAQ,aAC9D,YAAa,EAAK,YAClB,KAAM,EAAK,MAAQ,IAAA,GACnB,aAAc,EAAK,aACf,EAAK,aACF,MAAM,GAAG,EACT,IAAK,GAAM,EAAE,KAAK,CAAC,EACnB,OAAQ,GAAM,EAAE,OAAS,CAAC,EAC7B,IAAA,GACJ,qBACA,aAAc,EAAK,aACnB,YACA,UAAW,CACb,CAAC,EAEK,EAAY,EAAwB,CACxC,aAAc,EAAK,cAAgB,OACnC,QACF,CAAC,EACD,EAAQ,gBAAgB,CAAS,EACjC,MAAM,EAAU,MAAM,EACtB,MAAM,EAAQ,SAAS,CAAE,OAAQ,oBAAqB,QAAS,6BAA8B,CAAC,EAC9F,QAAQ,KAAK,EAAU,YAAY,CAAC,CACtC"}
@@ -1 +0,0 @@
1
- let e=require(`node:child_process`);function t(){return t=>(0,e.execSync)(t,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd()}exports.createShellExec=t;
@@ -1,2 +0,0 @@
1
- import{execSync as e}from"node:child_process";function t(){return t=>e(t,{timeout:5e3,encoding:`utf-8`,stdio:`pipe`}).trimEnd()}export{t as createShellExec};
2
- //# sourceMappingURL=shell-exec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell-exec.js","names":[],"sources":["../../../src/modes/shell-exec.ts"],"sourcesContent":["import { execSync } from 'node:child_process';\n\nexport const SHELL_EXEC_TIMEOUT_MS = 5_000;\n\nexport function createShellExec(): (command: string) => string {\n return (command: string): string =>\n execSync(command, {\n timeout: SHELL_EXEC_TIMEOUT_MS,\n encoding: 'utf-8',\n stdio: 'pipe',\n }).trimEnd();\n}\n"],"mappings":"8CAIA,SAAgB,GAA+C,CAC7D,MAAQ,IACN,EAAS,EAAS,CAChB,QAAS,IACT,SAAU,QACV,MAAO,MACT,CAAC,EAAE,QAAQ,CACf"}
@@ -1 +0,0 @@
1
- const e=require(`../constants.cjs`),t=require(`./shell-exec.cjs`);let n=require(`@robota-sdk/agent-transport/tui`);async function r(r){let{runtime:i,version:a,commandSetup:o,providerSetup:s,sessionSetup:c,sessionOpts:l,startupUpdateNotice:u}=r;await new n.TuiTransport({runtime:i,providerOverride:s.activeProfileName,providerType:s.providerSettings.name,modelId:s.modelId,language:l.language,permissionMode:l.permissionMode,maxTurns:l.maxTurns,version:a,resumeSessionId:c.resumeSessionId,showSessionPickerOnStart:c.showSessionPickerOnStart,forkSession:l.forkSession,sessionName:l.sessionName,shellExec:t.createShellExec(),startupUpdateNotice:u,cliAdapter:(0,n.createDefaultTuiCliAdapter)({providerDefinitions:o.providerDefinitions,reloadPluginCommandSource:o.reloadPluginCommandSource}),agentName:e.AGENT_CLI_NAME}).start()}exports.runTuiMode=r;
@@ -1,2 +0,0 @@
1
- import{AGENT_CLI_NAME as e}from"../constants.js";import{createShellExec as t}from"./shell-exec.js";import{TuiTransport as n,createDefaultTuiCliAdapter as r}from"@robota-sdk/agent-transport/tui";async function i(i){let{runtime:a,version:o,commandSetup:s,providerSetup:c,sessionSetup:l,sessionOpts:u,startupUpdateNotice:d}=i;await new n({runtime:a,providerOverride:c.activeProfileName,providerType:c.providerSettings.name,modelId:c.modelId,language:u.language,permissionMode:u.permissionMode,maxTurns:u.maxTurns,version:o,resumeSessionId:l.resumeSessionId,showSessionPickerOnStart:l.showSessionPickerOnStart,forkSession:u.forkSession,sessionName:u.sessionName,shellExec:t(),startupUpdateNotice:d,cliAdapter:r({providerDefinitions:s.providerDefinitions,reloadPluginCommandSource:s.reloadPluginCommandSource}),agentName:e}).start()}export{i as runTuiMode};
2
- //# sourceMappingURL=tui-mode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-mode.js","names":[],"sources":["../../../src/modes/tui-mode.ts"],"sourcesContent":["import { TuiTransport, createDefaultTuiCliAdapter } from '@robota-sdk/agent-transport/tui';\n\nimport type { ISessionRunOptions } from '../startup/args-to-options.js';\nimport type { ICommandSetup } from '../startup/command-setup.js';\nimport type { IProviderSetup } from '../startup/provider-setup.js';\nimport type { ISessionSetup } from '../startup/session-setup.js';\nimport type { IAgentRuntime } from '@robota-sdk/agent-framework';\nimport { AGENT_CLI_NAME } from '../constants.js';\nimport { createShellExec } from './shell-exec.js';\n\nexport interface ITuiModeOptions {\n runtime: IAgentRuntime;\n version: string;\n commandSetup: ICommandSetup;\n providerSetup: IProviderSetup;\n sessionSetup: ISessionSetup;\n sessionOpts: ISessionRunOptions;\n startupUpdateNotice: Promise<string | undefined> | undefined;\n}\n\nexport async function runTuiMode(opts: ITuiModeOptions): Promise<void> {\n const {\n runtime,\n version,\n commandSetup,\n providerSetup,\n sessionSetup,\n sessionOpts,\n startupUpdateNotice,\n } = opts;\n\n const tuiTransport = new TuiTransport({\n runtime,\n providerOverride: providerSetup.activeProfileName,\n providerType: providerSetup.providerSettings.name,\n modelId: providerSetup.modelId,\n language: sessionOpts.language,\n permissionMode: sessionOpts.permissionMode,\n maxTurns: sessionOpts.maxTurns,\n version,\n resumeSessionId: sessionSetup.resumeSessionId,\n showSessionPickerOnStart: sessionSetup.showSessionPickerOnStart,\n forkSession: sessionOpts.forkSession,\n sessionName: sessionOpts.sessionName,\n shellExec: createShellExec(),\n startupUpdateNotice,\n cliAdapter: createDefaultTuiCliAdapter({\n providerDefinitions: commandSetup.providerDefinitions,\n reloadPluginCommandSource: commandSetup.reloadPluginCommandSource,\n }),\n agentName: AGENT_CLI_NAME,\n });\n\n await tuiTransport.start();\n}\n"],"mappings":"kMAoBA,eAAsB,EAAW,EAAsC,CACrE,GAAM,CACJ,UACA,UACA,eACA,gBACA,eACA,cACA,uBACE,EAwBJ,MAAM,IAtBmB,EAAa,CACpC,UACA,iBAAkB,EAAc,kBAChC,aAAc,EAAc,iBAAiB,KAC7C,QAAS,EAAc,QACvB,SAAU,EAAY,SACtB,eAAgB,EAAY,eAC5B,SAAU,EAAY,SACtB,UACA,gBAAiB,EAAa,gBAC9B,yBAA0B,EAAa,yBACvC,YAAa,EAAY,YACzB,YAAa,EAAY,YACzB,UAAW,EAAgB,EAC3B,sBACA,WAAY,EAA2B,CACrC,oBAAqB,EAAa,oBAClC,0BAA2B,EAAa,yBAC1C,CAAC,EACD,UAAW,CACb,CAEiB,EAAE,MAAM,CAC3B"}
@@ -1,2 +0,0 @@
1
- import{createAnthropicProviderDefinition as e}from"@robota-sdk/agent-provider/anthropic";import{createDeepSeekProviderDefinition as t}from"@robota-sdk/agent-provider/deepseek";import{createGemmaProviderDefinition as n}from"@robota-sdk/agent-provider/gemma";import{createGeminiProviderDefinition as r}from"@robota-sdk/agent-provider/gemini";import{createOpenAIProviderDefinition as i}from"@robota-sdk/agent-provider/openai";import{createQwenProviderDefinition as a}from"@robota-sdk/agent-provider/qwen";const o=[e(),i(),r(),n(),a(),t()];export{o as t};
2
- //# sourceMappingURL=provider-default-definitions-CKtxv2k0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-default-definitions-CKtxv2k0.js","names":[],"sources":["../../src/utils/provider-default-definitions.ts"],"sourcesContent":["import { createAnthropicProviderDefinition } from '@robota-sdk/agent-provider/anthropic';\nimport { createDeepSeekProviderDefinition } from '@robota-sdk/agent-provider/deepseek';\nimport { createGemmaProviderDefinition } from '@robota-sdk/agent-provider/gemma';\nimport { createGeminiProviderDefinition } from '@robota-sdk/agent-provider/gemini';\nimport { createOpenAIProviderDefinition } from '@robota-sdk/agent-provider/openai';\nimport { createQwenProviderDefinition } from '@robota-sdk/agent-provider/qwen';\nimport type { IProviderDefinition } from './provider-definition.js';\n\nexport const DEFAULT_PROVIDER_DEFINITIONS: readonly IProviderDefinition[] = [\n createAnthropicProviderDefinition(),\n createOpenAIProviderDefinition(),\n createGeminiProviderDefinition(),\n createGemmaProviderDefinition(),\n createQwenProviderDefinition(),\n createDeepSeekProviderDefinition(),\n];\n"],"mappings":"sfAQA,MAAa,EAA+D,CAC1E,EAAkC,EAClC,EAA+B,EAC/B,EAA+B,EAC/B,EAA8B,EAC9B,EAA6B,EAC7B,EAAiC,CACnC"}
@@ -1 +0,0 @@
1
- let e=require(`@robota-sdk/agent-provider/anthropic`),t=require(`@robota-sdk/agent-provider/deepseek`),n=require(`@robota-sdk/agent-provider/gemma`),r=require(`@robota-sdk/agent-provider/gemini`),i=require(`@robota-sdk/agent-provider/openai`),a=require(`@robota-sdk/agent-provider/qwen`);const o=[(0,e.createAnthropicProviderDefinition)(),(0,i.createOpenAIProviderDefinition)(),(0,r.createGeminiProviderDefinition)(),(0,n.createGemmaProviderDefinition)(),(0,a.createQwenProviderDefinition)(),(0,t.createDeepSeekProviderDefinition)()];Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
@@ -1 +0,0 @@
1
- require(`./index.cjs`);let e=require(`@robota-sdk/agent-provider/anthropic`),t=require(`@robota-sdk/agent-provider/deepseek`),n=require(`@robota-sdk/agent-provider/gemma`),r=require(`@robota-sdk/agent-provider/gemini`),i=require(`@robota-sdk/agent-provider/openai`),a=require(`@robota-sdk/agent-provider/qwen`);const o=[(0,e.createAnthropicProviderDefinition)(),(0,i.createOpenAIProviderDefinition)(),(0,r.createGeminiProviderDefinition)(),(0,n.createGemmaProviderDefinition)(),(0,a.createQwenProviderDefinition)(),(0,t.createDeepSeekProviderDefinition)()];Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
@@ -1,3 +0,0 @@
1
- let e=require(`node:fs`),t=require(`node:path`);function n(n,r){let i=(0,e.readFileSync)((0,t.resolve)(n,r),`utf8`).trim();if(i.length===0)throw Error(`Task file is empty: ${r}`);return`Task file (${r}):\n${i}`}function r(e,t){let r=[];return t.appendSystemPrompt&&r.push(t.appendSystemPrompt),t.taskFile&&r.push(n(e,t.taskFile)),t.jsonSchema&&r.push(`Respond with valid JSON only, matching this JSON schema:\n${t.jsonSchema}`),r.length>0?r.join(`
2
-
3
- `):void 0}exports.buildAppendSystemPrompt=r;
@@ -1,4 +0,0 @@
1
- import{readFileSync as e}from"node:fs";import{resolve as t}from"node:path";function n(n,r){let i=e(t(n,r),`utf8`).trim();if(i.length===0)throw Error(`Task file is empty: ${r}`);return`Task file (${r}):\n${i}`}function r(e,t){let r=[];return t.appendSystemPrompt&&r.push(t.appendSystemPrompt),t.taskFile&&r.push(n(e,t.taskFile)),t.jsonSchema&&r.push(`Respond with valid JSON only, matching this JSON schema:\n${t.jsonSchema}`),r.length>0?r.join(`
2
-
3
- `):void 0}export{r as buildAppendSystemPrompt};
4
- //# sourceMappingURL=append-system-prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"append-system-prompt.js","names":[],"sources":["../../../src/startup/append-system-prompt.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nexport interface IAppendSystemPromptOptions {\n appendSystemPrompt?: string;\n taskFile?: string;\n jsonSchema?: string;\n}\n\nfunction readTaskFilePrompt(cwd: string, taskFile: string): string {\n const taskPath = resolve(cwd, taskFile);\n const content = readFileSync(taskPath, 'utf8').trim();\n if (content.length === 0) {\n throw new Error(`Task file is empty: ${taskFile}`);\n }\n return `Task file (${taskFile}):\\n${content}`;\n}\n\nexport function buildAppendSystemPrompt(\n cwd: string,\n opts: IAppendSystemPromptOptions,\n): string | undefined {\n const appendParts: string[] = [];\n if (opts.appendSystemPrompt) appendParts.push(opts.appendSystemPrompt);\n if (opts.taskFile) {\n appendParts.push(readTaskFilePrompt(cwd, opts.taskFile));\n }\n if (opts.jsonSchema)\n appendParts.push(\n `Respond with valid JSON only, matching this JSON schema:\\n${opts.jsonSchema}`,\n );\n return appendParts.length > 0 ? appendParts.join('\\n\\n') : undefined;\n}\n"],"mappings":"2EASA,SAAS,EAAmB,EAAa,EAA0B,CAEjE,IAAM,EAAU,EADC,EAAQ,EAAK,CACM,EAAG,MAAM,EAAE,KAAK,EACpD,GAAI,EAAQ,SAAW,EACrB,MAAU,MAAM,uBAAuB,GAAU,EAEnD,MAAO,cAAc,EAAS,MAAM,GACtC,CAEA,SAAgB,EACd,EACA,EACoB,CACpB,IAAM,EAAwB,CAAC,EAS/B,OARI,EAAK,oBAAoB,EAAY,KAAK,EAAK,kBAAkB,EACjE,EAAK,UACP,EAAY,KAAK,EAAmB,EAAK,EAAK,QAAQ,CAAC,EAErD,EAAK,YACP,EAAY,KACV,6DAA6D,EAAK,YACpE,EACK,EAAY,OAAS,EAAI,EAAY,KAAK;;CAAM,EAAI,IAAA,EAC7D"}
@@ -1 +0,0 @@
1
- function e(e){return{configure:e.configure,provider:e.provider,settingsScope:e.settingsScope,configureProvider:e.configureProvider,providerType:e.providerType,model:e.model,apiKey:e.apiKey,apiKeyEnv:e.apiKeyEnv,baseURL:e.baseURL,setCurrent:e.setCurrent,printMode:e.printMode||e.dryRun,positional:e.positional}}function t(e){return{positional:e.positional,language:e.language,permissionMode:e.dryRun?`plan`:e.permissionMode,maxTurns:e.maxTurns,sessionName:e.sessionName,noSessionPersistence:e.noSessionPersistence,continueMode:e.continueMode,resumeId:e.resumeId,forkSession:e.forkSession,outputFormat:e.outputFormat,bare:e.bare,allowedTools:e.allowedTools,systemPrompt:e.systemPrompt,appendSystemPrompt:e.appendSystemPrompt,taskFile:e.taskFile,jsonSchema:e.jsonSchema,dryRun:e.dryRun}}function n(e){return{positional:e.positional,format:e.format,summary:e.summary,source:e.source}}function r(e){return{printMode:e.printMode,disableUpdateCheck:e.disableUpdateCheck}}exports.toConfigPhaseOptions=e,exports.toSessionRunOptions=t,exports.toStartupUpdatePolicyOptions=r,exports.toUserLocalCommandOptions=n;
@@ -1,2 +0,0 @@
1
- function e(e){return{configure:e.configure,provider:e.provider,settingsScope:e.settingsScope,configureProvider:e.configureProvider,providerType:e.providerType,model:e.model,apiKey:e.apiKey,apiKeyEnv:e.apiKeyEnv,baseURL:e.baseURL,setCurrent:e.setCurrent,printMode:e.printMode||e.dryRun,positional:e.positional}}function t(e){return{positional:e.positional,language:e.language,permissionMode:e.dryRun?`plan`:e.permissionMode,maxTurns:e.maxTurns,sessionName:e.sessionName,noSessionPersistence:e.noSessionPersistence,continueMode:e.continueMode,resumeId:e.resumeId,forkSession:e.forkSession,outputFormat:e.outputFormat,bare:e.bare,allowedTools:e.allowedTools,systemPrompt:e.systemPrompt,appendSystemPrompt:e.appendSystemPrompt,taskFile:e.taskFile,jsonSchema:e.jsonSchema,dryRun:e.dryRun}}function n(e){return{positional:e.positional,format:e.format,summary:e.summary,source:e.source}}function r(e){return{printMode:e.printMode,disableUpdateCheck:e.disableUpdateCheck}}export{e as toConfigPhaseOptions,t as toSessionRunOptions,r as toStartupUpdatePolicyOptions,n as toUserLocalCommandOptions};
2
- //# sourceMappingURL=args-to-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"args-to-options.js","names":[],"sources":["../../../src/startup/args-to-options.ts"],"sourcesContent":["import type { IParsedCliArgs, TOutputFormat } from '../utils/cli-args.js';\nimport type { TPermissionMode } from '@robota-sdk/agent-core';\n\nexport interface IConfigPhaseOptions {\n configure: boolean;\n provider?: string;\n settingsScope?: string;\n configureProvider?: string;\n providerType?: string;\n model?: string;\n apiKey?: string;\n apiKeyEnv?: string;\n baseURL?: string;\n setCurrent: boolean;\n printMode: boolean;\n positional: readonly string[];\n}\n\nexport interface ISessionRunOptions {\n positional: readonly string[];\n language?: string;\n permissionMode?: TPermissionMode;\n maxTurns?: number;\n sessionName?: string;\n noSessionPersistence: boolean;\n continueMode: boolean;\n resumeId?: string;\n forkSession: boolean;\n outputFormat?: TOutputFormat;\n bare: boolean;\n allowedTools?: string;\n systemPrompt?: string;\n appendSystemPrompt?: string;\n taskFile?: string;\n jsonSchema?: string;\n dryRun: boolean;\n}\n\nexport interface IUserLocalCommandOptions {\n positional: readonly string[];\n format?: string;\n summary?: string;\n source?: string;\n}\n\nexport interface IStartupUpdatePolicyOptions {\n printMode: boolean;\n disableUpdateCheck: boolean;\n}\n\nexport function toConfigPhaseOptions(args: IParsedCliArgs): IConfigPhaseOptions {\n return {\n configure: args.configure,\n provider: args.provider,\n settingsScope: args.settingsScope,\n configureProvider: args.configureProvider,\n providerType: args.providerType,\n model: args.model,\n apiKey: args.apiKey,\n apiKeyEnv: args.apiKeyEnv,\n baseURL: args.baseURL,\n setCurrent: args.setCurrent,\n printMode: args.printMode || args.dryRun,\n positional: args.positional,\n };\n}\n\nexport function toSessionRunOptions(args: IParsedCliArgs): ISessionRunOptions {\n return {\n positional: args.positional,\n language: args.language,\n permissionMode: args.dryRun ? 'plan' : args.permissionMode,\n maxTurns: args.maxTurns,\n sessionName: args.sessionName,\n noSessionPersistence: args.noSessionPersistence,\n continueMode: args.continueMode,\n resumeId: args.resumeId,\n forkSession: args.forkSession,\n outputFormat: args.outputFormat,\n bare: args.bare,\n allowedTools: args.allowedTools,\n systemPrompt: args.systemPrompt,\n appendSystemPrompt: args.appendSystemPrompt,\n taskFile: args.taskFile,\n jsonSchema: args.jsonSchema,\n dryRun: args.dryRun,\n };\n}\n\nexport function toUserLocalCommandOptions(args: IParsedCliArgs): IUserLocalCommandOptions {\n return {\n positional: args.positional,\n format: args.format,\n summary: args.summary,\n source: args.source,\n };\n}\n\nexport function toStartupUpdatePolicyOptions(args: IParsedCliArgs): IStartupUpdatePolicyOptions {\n return {\n printMode: args.printMode,\n disableUpdateCheck: args.disableUpdateCheck,\n };\n}\n"],"mappings":"AAkDA,SAAgB,EAAqB,EAA2C,CAC9E,MAAO,CACL,UAAW,EAAK,UAChB,SAAU,EAAK,SACf,cAAe,EAAK,cACpB,kBAAmB,EAAK,kBACxB,aAAc,EAAK,aACnB,MAAO,EAAK,MACZ,OAAQ,EAAK,OACb,UAAW,EAAK,UAChB,QAAS,EAAK,QACd,WAAY,EAAK,WACjB,UAAW,EAAK,WAAa,EAAK,OAClC,WAAY,EAAK,UACnB,CACF,CAEA,SAAgB,EAAoB,EAA0C,CAC5E,MAAO,CACL,WAAY,EAAK,WACjB,SAAU,EAAK,SACf,eAAgB,EAAK,OAAS,OAAS,EAAK,eAC5C,SAAU,EAAK,SACf,YAAa,EAAK,YAClB,qBAAsB,EAAK,qBAC3B,aAAc,EAAK,aACnB,SAAU,EAAK,SACf,YAAa,EAAK,YAClB,aAAc,EAAK,aACnB,KAAM,EAAK,KACX,aAAc,EAAK,aACnB,aAAc,EAAK,aACnB,mBAAoB,EAAK,mBACzB,SAAU,EAAK,SACf,WAAY,EAAK,WACjB,OAAQ,EAAK,MACf,CACF,CAEA,SAAgB,EAA0B,EAAgD,CACxF,MAAO,CACL,WAAY,EAAK,WACjB,OAAQ,EAAK,OACb,QAAS,EAAK,QACd,OAAQ,EAAK,MACf,CACF,CAEA,SAAgB,EAA6B,EAAmD,CAC9F,MAAO,CACL,UAAW,EAAK,UAChB,mBAAoB,EAAK,kBAC3B,CACF"}
@@ -1 +0,0 @@
1
- let e=require(`@robota-sdk/agent-framework`),t=require(`@robota-sdk/agent-command`),n=require(`@robota-sdk/agent-provider`);function r(r,i={}){let a={settings:{read:()=>(0,e.readSettings)((0,e.getUserSettingsPath)()),write:t=>(0,e.writeSettings)((0,e.getUserSettingsPath)(),t)},plugin:(0,t.createDefaultPluginCommandAdapter)(r)},o=i.providerDefinitions??(0,n.createDefaultProviderDefinitions)();return{commandHostAdapters:a,providerDefinitions:o,commandModules:[...(0,t.createDefaultCommandModules)({cwd:r,providerDefinitions:o,providerSettingsAdapter:{readMergedSettings:()=>(0,e.readMergedProviderSettings)(r),readTargetSettings:()=>(0,e.readSettings)((0,e.resolveProviderSettingsWriteTargetPath)(r)),writeTargetSettings:t=>(0,e.writeSettings)((0,e.resolveProviderSettingsWriteTargetPath)(r),t)}}),...i.commandModules??[]],reloadPluginCommandSource:t.reloadPluginCommandSource}}exports.createCommandSetup=r;
@@ -1,11 +0,0 @@
1
- import { ICommandModule } from "@robota-sdk/agent-framework";
2
- import { IProviderDefinition } from "@robota-sdk/agent-core";
3
-
4
- //#region src/startup/command-setup.d.ts
5
- interface IStartCliOptions {
6
- commandModules?: readonly ICommandModule[];
7
- providerDefinitions?: readonly IProviderDefinition[];
8
- }
9
- //#endregion
10
- export { IStartCliOptions };
11
- //# sourceMappingURL=command-setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-setup.d.ts","names":[],"sources":["../../../src/startup/command-setup.ts"],"mappings":";;;;UAqBiB,gBAAA;EACf,cAAA,YAA0B,cAAA;EAC1B,mBAAA,YAA+B,mBAAmB;AAAA"}
@@ -1,2 +0,0 @@
1
- import{getUserSettingsPath as e,readMergedProviderSettings as t,readSettings as n,resolveProviderSettingsWriteTargetPath as r,writeSettings as i}from"@robota-sdk/agent-framework";import{createDefaultCommandModules as a,createDefaultPluginCommandAdapter as o,reloadPluginCommandSource as s}from"@robota-sdk/agent-command";import{createDefaultProviderDefinitions as c}from"@robota-sdk/agent-provider";function l(l,u={}){let d={settings:{read:()=>n(e()),write:t=>i(e(),t)},plugin:o(l)},f=u.providerDefinitions??c();return{commandHostAdapters:d,providerDefinitions:f,commandModules:[...a({cwd:l,providerDefinitions:f,providerSettingsAdapter:{readMergedSettings:()=>t(l),readTargetSettings:()=>n(r(l)),writeTargetSettings:e=>i(r(l),e)}}),...u.commandModules??[]],reloadPluginCommandSource:s}}export{l as createCommandSetup};
2
- //# sourceMappingURL=command-setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-setup.js","names":[],"sources":["../../../src/startup/command-setup.ts"],"sourcesContent":["import type { IProviderDefinition } from '@robota-sdk/agent-core';\nimport {\n getUserSettingsPath,\n readMergedProviderSettings,\n readSettings,\n resolveProviderSettingsWriteTargetPath,\n writeSettings,\n} from '@robota-sdk/agent-framework';\nimport type {\n ICommandHostAdapters,\n ICommandModule,\n TProviderSettingsDocument,\n} from '@robota-sdk/agent-framework';\nimport type { CommandRegistry } from '@robota-sdk/agent-framework';\nimport {\n createDefaultCommandModules,\n createDefaultPluginCommandAdapter,\n reloadPluginCommandSource,\n} from '@robota-sdk/agent-command';\nimport { createDefaultProviderDefinitions } from '@robota-sdk/agent-provider';\n\nexport interface IStartCliOptions {\n commandModules?: readonly ICommandModule[];\n providerDefinitions?: readonly IProviderDefinition[];\n}\n\nexport interface ICommandSetup {\n commandHostAdapters: ICommandHostAdapters;\n providerDefinitions: readonly IProviderDefinition[];\n commandModules: readonly ICommandModule[];\n reloadPluginCommandSource: (registry: CommandRegistry) => void;\n}\n\nexport function createCommandSetup(cwd: string, options: IStartCliOptions = {}): ICommandSetup {\n const commandHostAdapters: ICommandHostAdapters = {\n settings: {\n read: () => readSettings(getUserSettingsPath()),\n write: (settings) => writeSettings(getUserSettingsPath(), settings),\n },\n plugin: createDefaultPluginCommandAdapter(cwd),\n };\n const providerDefinitions = options.providerDefinitions ?? createDefaultProviderDefinitions();\n const providerSettingsAdapter = {\n readMergedSettings: () => readMergedProviderSettings(cwd),\n readTargetSettings: () =>\n readSettings(resolveProviderSettingsWriteTargetPath(cwd)) as TProviderSettingsDocument,\n writeTargetSettings: (settings: TProviderSettingsDocument) =>\n writeSettings(resolveProviderSettingsWriteTargetPath(cwd), settings),\n };\n const commandModules: readonly ICommandModule[] = [\n ...createDefaultCommandModules({ cwd, providerDefinitions, providerSettingsAdapter }),\n ...(options.commandModules ?? []),\n ];\n return { commandHostAdapters, providerDefinitions, commandModules, reloadPluginCommandSource };\n}\n"],"mappings":"+YAiCA,SAAgB,EAAmB,EAAa,EAA4B,CAAC,EAAkB,CAC7F,IAAM,EAA4C,CAChD,SAAU,CACR,SAAY,EAAa,EAAoB,CAAC,EAC9C,MAAQ,GAAa,EAAc,EAAoB,EAAG,CAAQ,CACpE,EACA,OAAQ,EAAkC,CAAG,CAC/C,EACM,EAAsB,EAAQ,qBAAuB,EAAiC,EAY5F,MAAO,CAAE,sBAAqB,sBAAqB,eAAA,CAHjD,GAAG,EAA4B,CAAE,MAAK,sBAAqB,wBAAA,CAP3D,uBAA0B,EAA2B,CAAG,EACxD,uBACE,EAAa,EAAuC,CAAG,CAAC,EAC1D,oBAAsB,GACpB,EAAc,EAAuC,CAAG,EAAG,CAAQ,CAGY,CAAE,CAAC,EACpF,GAAI,EAAQ,gBAAkB,CAAC,CAE+B,EAAG,2BAA0B,CAC/F"}
@@ -1 +0,0 @@
1
- const e=require(`./provider-startup.cjs`);let t=require(`@robota-sdk/agent-transport/headless`);async function n(n,r,i,a,o){return r.configure?(await e.runInteractiveProviderSetup(n,r,t.promptInput,a,i.providerDefinitions),{handled:!0}):e.handleProviderConfigurationArgs(n,r,a,i.providerDefinitions)?{handled:!0}:(await e.ensureConfig(n,r,t.promptInput,a,i.providerDefinitions,o),{handled:!1})}exports.handleConfigPhase=n;
@@ -1,2 +0,0 @@
1
- import{ensureConfig as e,handleProviderConfigurationArgs as t,runInteractiveProviderSetup as n}from"./provider-startup.js";import{promptInput as r}from"@robota-sdk/agent-transport/headless";async function i(i,a,o,s,c){return a.configure?(await n(i,a,r,s,o.providerDefinitions),{handled:!0}):t(i,a,s,o.providerDefinitions)?{handled:!0}:(await e(i,a,r,s,o.providerDefinitions,c),{handled:!1})}export{i as handleConfigPhase};
2
- //# sourceMappingURL=config-phase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-phase.js","names":[],"sources":["../../../src/startup/config-phase.ts"],"sourcesContent":["import type { ITerminalOutput } from '@robota-sdk/agent-core';\nimport { promptInput } from '@robota-sdk/agent-transport/headless';\nimport type { IConfigPhaseOptions } from './args-to-options.js';\nimport type { ICommandSetup } from './command-setup.js';\nimport {\n ensureConfig,\n handleProviderConfigurationArgs,\n runInteractiveProviderSetup,\n} from './provider-startup.js';\n\nexport type TConfigPhaseResult = { handled: true } | { handled: false };\n\nexport async function handleConfigPhase(\n cwd: string,\n opts: IConfigPhaseOptions,\n commandSetup: ICommandSetup,\n terminal: ITerminalOutput,\n isInteractive: boolean,\n): Promise<TConfigPhaseResult> {\n if (opts.configure) {\n await runInteractiveProviderSetup(\n cwd,\n opts,\n promptInput,\n terminal,\n commandSetup.providerDefinitions,\n );\n return { handled: true };\n }\n\n if (handleProviderConfigurationArgs(cwd, opts, terminal, commandSetup.providerDefinitions)) {\n return { handled: true };\n }\n\n await ensureConfig(\n cwd,\n opts,\n promptInput,\n terminal,\n commandSetup.providerDefinitions,\n isInteractive,\n );\n\n return { handled: false };\n}\n"],"mappings":"8LAYA,eAAsB,EACpB,EACA,EACA,EACA,EACA,EAC6B,CAyB7B,OAxBI,EAAK,WACP,MAAM,EACJ,EACA,EACA,EACA,EACA,EAAa,mBACf,EACO,CAAE,QAAS,EAAK,GAGrB,EAAgC,EAAK,EAAM,EAAU,EAAa,mBAAmB,EAChF,CAAE,QAAS,EAAK,GAGzB,MAAM,EACJ,EACA,EACA,EACA,EACA,EAAa,oBACb,CACF,EAEO,CAAE,QAAS,EAAM,EAC1B"}
@@ -1 +0,0 @@
1
- const e=require(`../utils/cli-args.cjs`),t=require(`../init/init-command.cjs`),n=require(`./reset-config.cjs`);let r=require(`@robota-sdk/agent-framework`);async function i(i,a){if(i.positional[0]===`init`)return await t.runInitCommand(a.cwd,a.terminal),{handled:!0};if(i.help)return a.terminal.write(e.printHelp()),{handled:!0};if(i.version)return a.terminal.writeLine(`robota ${a.version}`),{handled:!0};if(i.checkUpdate){let e=await(0,r.checkForCliUpdate)({currentVersion:a.version,force:!0}),t=(0,r.formatCliUpdateCheckMessage)(e);if(e.status===`error`)throw Error(t);return a.terminal.writeLine(t),{handled:!0}}return i.reset?(n.runResetConfig(a.terminal),{handled:!0}):{handled:!1}}exports.handlePreflightCommands=i;
@@ -1,2 +0,0 @@
1
- import{printHelp as e}from"../utils/cli-args.js";import{runInitCommand as t}from"../init/init-command.js";import{runResetConfig as n}from"./reset-config.js";import{checkForCliUpdate as r,formatCliUpdateCheckMessage as i}from"@robota-sdk/agent-framework";async function a(a,o){if(a.positional[0]===`init`)return await t(o.cwd,o.terminal),{handled:!0};if(a.help)return o.terminal.write(e()),{handled:!0};if(a.version)return o.terminal.writeLine(`robota ${o.version}`),{handled:!0};if(a.checkUpdate){let e=await r({currentVersion:o.version,force:!0}),t=i(e);if(e.status===`error`)throw Error(t);return o.terminal.writeLine(t),{handled:!0}}return a.reset?(n(o.terminal),{handled:!0}):{handled:!1}}export{a as handlePreflightCommands};
2
- //# sourceMappingURL=preflight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preflight.js","names":[],"sources":["../../../src/startup/preflight.ts"],"sourcesContent":["import type { ITerminalOutput } from '@robota-sdk/agent-core';\nimport { checkForCliUpdate, formatCliUpdateCheckMessage } from '@robota-sdk/agent-framework';\nimport type { IParsedCliArgs } from '../utils/cli-args.js';\nimport { printHelp } from '../utils/cli-args.js';\nimport { runInitCommand } from '../init/init-command.js';\nimport { runResetConfig } from './reset-config.js';\n\nexport type TPreflightResult = { handled: true } | { handled: false };\n\nexport interface IPreflightContext {\n version: string;\n terminal: ITerminalOutput;\n cwd: string;\n}\n\nexport async function handlePreflightCommands(\n args: IParsedCliArgs,\n ctx: IPreflightContext,\n): Promise<TPreflightResult> {\n if (args.positional[0] === 'init') {\n await runInitCommand(ctx.cwd, ctx.terminal);\n return { handled: true };\n }\n if (args.help) {\n ctx.terminal.write(printHelp());\n return { handled: true };\n }\n if (args.version) {\n ctx.terminal.writeLine(`robota ${ctx.version}`);\n return { handled: true };\n }\n if (args.checkUpdate) {\n const result = await checkForCliUpdate({ currentVersion: ctx.version, force: true });\n const message = formatCliUpdateCheckMessage(result);\n if (result.status === 'error') {\n throw new Error(message);\n }\n ctx.terminal.writeLine(message);\n return { handled: true };\n }\n if (args.reset) {\n runResetConfig(ctx.terminal);\n return { handled: true };\n }\n return { handled: false };\n}\n"],"mappings":"8PAeA,eAAsB,EACpB,EACA,EAC2B,CAC3B,GAAI,EAAK,WAAW,KAAO,OAEzB,OADA,MAAM,EAAe,EAAI,IAAK,EAAI,QAAQ,EACnC,CAAE,QAAS,EAAK,EAEzB,GAAI,EAAK,KAEP,OADA,EAAI,SAAS,MAAM,EAAU,CAAC,EACvB,CAAE,QAAS,EAAK,EAEzB,GAAI,EAAK,QAEP,OADA,EAAI,SAAS,UAAU,UAAU,EAAI,SAAS,EACvC,CAAE,QAAS,EAAK,EAEzB,GAAI,EAAK,YAAa,CACpB,IAAM,EAAS,MAAM,EAAkB,CAAE,eAAgB,EAAI,QAAS,MAAO,EAAK,CAAC,EAC7E,EAAU,EAA4B,CAAM,EAClD,GAAI,EAAO,SAAW,QACpB,MAAU,MAAM,CAAO,EAGzB,OADA,EAAI,SAAS,UAAU,CAAO,EACvB,CAAE,QAAS,EAAK,CACzB,CAKA,OAJI,EAAK,OACP,EAAe,EAAI,QAAQ,EACpB,CAAE,QAAS,EAAK,GAElB,CAAE,QAAS,EAAM,CAC1B"}
@@ -1 +0,0 @@
1
- const e=require(`./subagent-setup.cjs`);let t=require(`@robota-sdk/agent-framework`);function n(n,r,i){let a=r.provider?{providerOverride:r.provider,providerDefinitions:i.providerDefinitions}:{providerDefinitions:i.providerDefinitions},o=(0,t.readProviderSettings)(n,a),s=r.model??o.model,c=(0,t.createProviderFromSettings)(n,r.model,a),l=r.provider??(0,t.readMergedProviderSettings)(n).currentProvider,{subagentRunnerFactory:u}=e.createSubagentSetup({providerConfig:{...o,model:s},logsDir:(0,t.projectPaths)(n).logs});return{provider:c,providerSettings:o,modelId:s,activeProfileName:l,subagentRunnerFactory:u}}exports.createProviderSetup=n;
@@ -1,2 +0,0 @@
1
- import{createSubagentSetup as e}from"./subagent-setup.js";import{createProviderFromSettings as t,projectPaths as n,readMergedProviderSettings as r,readProviderSettings as i}from"@robota-sdk/agent-framework";function a(a,o,s){let c=o.provider?{providerOverride:o.provider,providerDefinitions:s.providerDefinitions}:{providerDefinitions:s.providerDefinitions},l=i(a,c),u=o.model??l.model,d=t(a,o.model,c),f=o.provider??r(a).currentProvider,{subagentRunnerFactory:p}=e({providerConfig:{...l,model:u},logsDir:n(a).logs});return{provider:d,providerSettings:l,modelId:u,activeProfileName:f,subagentRunnerFactory:p}}export{a as createProviderSetup};
2
- //# sourceMappingURL=provider-setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-setup.js","names":[],"sources":["../../../src/startup/provider-setup.ts"],"sourcesContent":["import type { IAIProvider, IProviderConfig } from '@robota-sdk/agent-core';\nimport type { TSubagentRunnerFactory } from '@robota-sdk/agent-framework';\nimport {\n projectPaths,\n readMergedProviderSettings,\n readProviderSettings,\n createProviderFromSettings,\n} from '@robota-sdk/agent-framework';\nimport type { IConfigPhaseOptions } from './args-to-options.js';\nimport type { ICommandSetup } from './command-setup.js';\nimport { createSubagentSetup } from './subagent-setup.js';\n\nexport interface IProviderSetup {\n provider: IAIProvider;\n providerSettings: IProviderConfig;\n modelId: string;\n activeProfileName: string | undefined;\n subagentRunnerFactory: TSubagentRunnerFactory;\n}\n\nexport function createProviderSetup(\n cwd: string,\n opts: IConfigPhaseOptions,\n commandSetup: ICommandSetup,\n): IProviderSetup {\n const providerOptions = opts.provider\n ? { providerOverride: opts.provider, providerDefinitions: commandSetup.providerDefinitions }\n : { providerDefinitions: commandSetup.providerDefinitions };\n\n const providerSettings = readProviderSettings(cwd, providerOptions);\n const modelId = opts.model ?? providerSettings.model;\n const provider = createProviderFromSettings(cwd, opts.model, providerOptions);\n const activeProfileName = opts.provider ?? readMergedProviderSettings(cwd).currentProvider;\n\n const { subagentRunnerFactory } = createSubagentSetup({\n providerConfig: { ...providerSettings, model: modelId },\n logsDir: projectPaths(cwd).logs,\n });\n\n return { provider, providerSettings, modelId, activeProfileName, subagentRunnerFactory };\n}\n"],"mappings":"+MAoBA,SAAgB,EACd,EACA,EACA,EACgB,CAChB,IAAM,EAAkB,EAAK,SACzB,CAAE,iBAAkB,EAAK,SAAU,oBAAqB,EAAa,mBAAoB,EACzF,CAAE,oBAAqB,EAAa,mBAAoB,EAEtD,EAAmB,EAAqB,EAAK,CAAe,EAC5D,EAAU,EAAK,OAAS,EAAiB,MACzC,EAAW,EAA2B,EAAK,EAAK,MAAO,CAAe,EACtE,EAAoB,EAAK,UAAY,EAA2B,CAAG,EAAE,gBAErE,CAAE,yBAA0B,EAAoB,CACpD,eAAgB,CAAE,GAAG,EAAkB,MAAO,CAAQ,EACtD,QAAS,EAAa,CAAG,EAAE,IAC7B,CAAC,EAED,MAAO,CAAE,WAAU,mBAAkB,UAAS,oBAAmB,uBAAsB,CACzF"}
@@ -1,2 +0,0 @@
1
- let e=require(`@robota-sdk/agent-framework`),t=require(`@robota-sdk/agent-command`),n=require(`@robota-sdk/agent-core`);function r(e){if(e===void 0||e===`user`||e===`project-local`)return e;throw Error(`Invalid --settings-scope "${e}". Valid: user | project-local`)}function i(t,n,i,a){let o=(0,e.resolveSettingsPathForScope)(t,r(n.settingsScope));return n.configureProvider?((0,e.applyProviderConfiguration)(o,s(n),{providerDefinitions:a}),i.writeLine(`Provider profile saved to ${o}`),!n.printMode&&n.positional.length===0):n.provider&&n.setCurrent?((0,e.applyProviderSwitch)(n.settingsScope===void 0?(0,e.resolveProviderSettingsWriteTargetPath)(t):o,n.provider,{knownProviders:(0,e.readMergedProviderSettings)(t).providers}),i.writeLine(`Current provider set to ${n.provider}`),!n.printMode&&n.positional.length===0):!1}async function a(e,n,i,a,o,s){await(0,t.ensureProviderConfig)(e,{provider:n.provider,settingsScope:r(n.settingsScope)},i,a,o,{formatError:c,isInteractive:()=>s})}async function o(e,n,i,a,o){await(0,t.runProviderStartupSetup)(e,{settingsScope:r(n.settingsScope)},i,a,o)}function s(e){let t=e.providerType??e.configureProvider;if(!e.configureProvider||!t)throw Error(`--configure-provider requires a provider profile and --type`);return{profile:e.configureProvider,type:t,...e.model!==void 0&&{model:e.model},...e.apiKey!==void 0&&{apiKey:e.apiKey},...e.apiKeyEnv!==void 0&&{apiKeyEnv:e.apiKeyEnv},...e.baseURL!==void 0&&{baseURL:e.baseURL},setCurrent:e.setCurrent}}function c(e){return[`No provider configuration found.`,"Run `robota --configure` in an interactive terminal, or configure a provider:",`Supported providers: ${(0,n.formatSupportedProviderTypes)(e)}`,...e.map(l)].join(`
2
- `)}function l(e){return` ${[`robota --configure-provider ${e.type}`,`--type ${e.type}`,...e.defaults?.baseURL===void 0?[]:[`--base-url <url>`],`--model <model>`,...e.requiresApiKey===!0?[`--api-key-env <ENV_NAME>`]:[],`--set-current`].join(` `)}`}exports.ensureConfig=a,exports.handleProviderConfigurationArgs=i,exports.runInteractiveProviderSetup=o;
@@ -1,3 +0,0 @@
1
- import{applyProviderConfiguration as e,applyProviderSwitch as t,readMergedProviderSettings as n,resolveProviderSettingsWriteTargetPath as r,resolveSettingsPathForScope as i}from"@robota-sdk/agent-framework";import{ensureProviderConfig as a,runProviderStartupSetup as o}from"@robota-sdk/agent-command";import{formatSupportedProviderTypes as s}from"@robota-sdk/agent-core";function c(e){if(e===void 0||e===`user`||e===`project-local`)return e;throw Error(`Invalid --settings-scope "${e}". Valid: user | project-local`)}function l(a,o,s,l){let u=i(a,c(o.settingsScope));return o.configureProvider?(e(u,f(o),{providerDefinitions:l}),s.writeLine(`Provider profile saved to ${u}`),!o.printMode&&o.positional.length===0):o.provider&&o.setCurrent?(t(o.settingsScope===void 0?r(a):u,o.provider,{knownProviders:n(a).providers}),s.writeLine(`Current provider set to ${o.provider}`),!o.printMode&&o.positional.length===0):!1}async function u(e,t,n,r,i,o){await a(e,{provider:t.provider,settingsScope:c(t.settingsScope)},n,r,i,{formatError:p,isInteractive:()=>o})}async function d(e,t,n,r,i){await o(e,{settingsScope:c(t.settingsScope)},n,r,i)}function f(e){let t=e.providerType??e.configureProvider;if(!e.configureProvider||!t)throw Error(`--configure-provider requires a provider profile and --type`);return{profile:e.configureProvider,type:t,...e.model!==void 0&&{model:e.model},...e.apiKey!==void 0&&{apiKey:e.apiKey},...e.apiKeyEnv!==void 0&&{apiKeyEnv:e.apiKeyEnv},...e.baseURL!==void 0&&{baseURL:e.baseURL},setCurrent:e.setCurrent}}function p(e){return[`No provider configuration found.`,"Run `robota --configure` in an interactive terminal, or configure a provider:",`Supported providers: ${s(e)}`,...e.map(m)].join(`
2
- `)}function m(e){return` ${[`robota --configure-provider ${e.type}`,`--type ${e.type}`,...e.defaults?.baseURL===void 0?[]:[`--base-url <url>`],`--model <model>`,...e.requiresApiKey===!0?[`--api-key-env <ENV_NAME>`]:[],`--set-current`].join(` `)}`}export{u as ensureConfig,l as handleProviderConfigurationArgs,d as runInteractiveProviderSetup};
3
- //# sourceMappingURL=provider-startup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-startup.js","names":[],"sources":["../../../src/startup/provider-startup.ts"],"sourcesContent":["import { formatSupportedProviderTypes, type IProviderDefinition } from '@robota-sdk/agent-core';\nimport type { IConfigPhaseOptions } from './args-to-options.js';\nimport {\n applyProviderConfiguration,\n applyProviderSwitch,\n readMergedProviderSettings,\n resolveProviderSettingsWriteTargetPath,\n resolveSettingsPathForScope,\n} from '@robota-sdk/agent-framework';\nimport type { TSettingsScope } from '@robota-sdk/agent-framework';\nimport { type IProviderSetupInput } from '@robota-sdk/agent-framework';\nimport {\n ensureProviderConfig,\n runProviderStartupSetup,\n type TPromptInput,\n} from '@robota-sdk/agent-command';\nimport type { ITerminalOutput } from '@robota-sdk/agent-core';\n\nfunction validateSettingsScope(scope: string | undefined): TSettingsScope | undefined {\n if (scope === undefined || scope === 'user' || scope === 'project-local') {\n return scope as TSettingsScope | undefined;\n }\n throw new Error(`Invalid --settings-scope \"${scope}\". Valid: user | project-local`);\n}\n\nexport function handleProviderConfigurationArgs(\n cwd: string,\n opts: IConfigPhaseOptions,\n terminal: ITerminalOutput,\n providerDefinitions: readonly IProviderDefinition[],\n): boolean {\n const settingsPath = resolveSettingsPathForScope(cwd, validateSettingsScope(opts.settingsScope));\n if (opts.configureProvider) {\n applyProviderConfiguration(settingsPath, buildSetupInputFromOptions(opts), {\n providerDefinitions,\n });\n terminal.writeLine(`Provider profile saved to ${settingsPath}`);\n return !opts.printMode && opts.positional.length === 0;\n }\n if (opts.provider && opts.setCurrent) {\n const switchSettingsPath =\n opts.settingsScope === undefined ? resolveProviderSettingsWriteTargetPath(cwd) : settingsPath;\n applyProviderSwitch(switchSettingsPath, opts.provider, {\n knownProviders: readMergedProviderSettings(cwd).providers,\n });\n terminal.writeLine(`Current provider set to ${opts.provider}`);\n return !opts.printMode && opts.positional.length === 0;\n }\n return false;\n}\n\nexport async function ensureConfig(\n cwd: string,\n opts: IConfigPhaseOptions,\n promptInput: TPromptInput,\n terminal: ITerminalOutput,\n providerDefinitions: readonly IProviderDefinition[],\n isInteractive: boolean,\n): Promise<void> {\n await ensureProviderConfig(\n cwd,\n { provider: opts.provider, settingsScope: validateSettingsScope(opts.settingsScope) },\n promptInput,\n terminal,\n providerDefinitions,\n {\n formatError: formatMissingProviderConfigMessage,\n isInteractive: () => isInteractive,\n },\n );\n}\n\nexport async function runInteractiveProviderSetup(\n cwd: string,\n opts: IConfigPhaseOptions,\n promptInput: TPromptInput,\n terminal: ITerminalOutput,\n providerDefinitions: readonly IProviderDefinition[],\n): Promise<void> {\n await runProviderStartupSetup(\n cwd,\n { settingsScope: validateSettingsScope(opts.settingsScope) },\n promptInput,\n terminal,\n providerDefinitions,\n );\n}\n\nfunction buildSetupInputFromOptions(opts: IConfigPhaseOptions): IProviderSetupInput {\n const type = opts.providerType ?? opts.configureProvider;\n if (!opts.configureProvider || !type) {\n throw new Error('--configure-provider requires a provider profile and --type');\n }\n return {\n profile: opts.configureProvider,\n type,\n ...(opts.model !== undefined && { model: opts.model }),\n ...(opts.apiKey !== undefined && { apiKey: opts.apiKey }),\n ...(opts.apiKeyEnv !== undefined && { apiKeyEnv: opts.apiKeyEnv }),\n ...(opts.baseURL !== undefined && { baseURL: opts.baseURL }),\n setCurrent: opts.setCurrent,\n };\n}\n\nexport function formatMissingProviderConfigMessage(\n providerDefinitions: readonly IProviderDefinition[],\n): string {\n return [\n 'No provider configuration found.',\n 'Run `robota --configure` in an interactive terminal, or configure a provider:',\n `Supported providers: ${formatSupportedProviderTypes(providerDefinitions)}`,\n ...providerDefinitions.map(formatConfigureProviderExample),\n ].join('\\n');\n}\n\nfunction formatConfigureProviderExample(definition: IProviderDefinition): string {\n const flags = [\n `robota --configure-provider ${definition.type}`,\n `--type ${definition.type}`,\n ...(definition.defaults?.baseURL !== undefined ? ['--base-url <url>'] : []),\n '--model <model>',\n ...(definition.requiresApiKey === true ? ['--api-key-env <ENV_NAME>'] : []),\n '--set-current',\n ];\n return ` ${flags.join(' ')}`;\n}\n"],"mappings":"mXAkBA,SAAS,EAAsB,EAAuD,CACpF,GAAI,IAAU,IAAA,IAAa,IAAU,QAAU,IAAU,gBACvD,OAAO,EAET,MAAU,MAAM,6BAA6B,EAAM,+BAA+B,CACpF,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACS,CACT,IAAM,EAAe,EAA4B,EAAK,EAAsB,EAAK,aAAa,CAAC,EAiB/F,OAhBI,EAAK,mBACP,EAA2B,EAAc,EAA2B,CAAI,EAAG,CACzE,qBACF,CAAC,EACD,EAAS,UAAU,6BAA6B,GAAc,EACvD,CAAC,EAAK,WAAa,EAAK,WAAW,SAAW,GAEnD,EAAK,UAAY,EAAK,YAGxB,EADE,EAAK,gBAAkB,IAAA,GAAY,EAAuC,CAAG,EAAI,EAC3C,EAAK,SAAU,CACrD,eAAgB,EAA2B,CAAG,EAAE,SAClD,CAAC,EACD,EAAS,UAAU,2BAA2B,EAAK,UAAU,EACtD,CAAC,EAAK,WAAa,EAAK,WAAW,SAAW,GAEhD,EACT,CAEA,eAAsB,EACpB,EACA,EACA,EACA,EACA,EACA,EACe,CACf,MAAM,EACJ,EACA,CAAE,SAAU,EAAK,SAAU,cAAe,EAAsB,EAAK,aAAa,CAAE,EACpF,EACA,EACA,EACA,CACE,YAAa,EACb,kBAAqB,CACvB,CACF,CACF,CAEA,eAAsB,EACpB,EACA,EACA,EACA,EACA,EACe,CACf,MAAM,EACJ,EACA,CAAE,cAAe,EAAsB,EAAK,aAAa,CAAE,EAC3D,EACA,EACA,CACF,CACF,CAEA,SAAS,EAA2B,EAAgD,CAClF,IAAM,EAAO,EAAK,cAAgB,EAAK,kBACvC,GAAI,CAAC,EAAK,mBAAqB,CAAC,EAC9B,MAAU,MAAM,6DAA6D,EAE/E,MAAO,CACL,QAAS,EAAK,kBACd,OACA,GAAI,EAAK,QAAU,IAAA,IAAa,CAAE,MAAO,EAAK,KAAM,EACpD,GAAI,EAAK,SAAW,IAAA,IAAa,CAAE,OAAQ,EAAK,MAAO,EACvD,GAAI,EAAK,YAAc,IAAA,IAAa,CAAE,UAAW,EAAK,SAAU,EAChE,GAAI,EAAK,UAAY,IAAA,IAAa,CAAE,QAAS,EAAK,OAAQ,EAC1D,WAAY,EAAK,UACnB,CACF,CAEA,SAAgB,EACd,EACQ,CACR,MAAO,CACL,mCACA,gFACA,wBAAwB,EAA6B,CAAmB,IACxE,GAAG,EAAoB,IAAI,CAA8B,CAC3D,EAAE,KAAK;CAAI,CACb,CAEA,SAAS,EAA+B,EAAyC,CAS/E,MAAO,KAAK,CAPV,+BAA+B,EAAW,OAC1C,UAAU,EAAW,OACrB,GAAI,EAAW,UAAU,UAAY,IAAA,GAAmC,CAAC,EAAxB,CAAC,kBAAkB,EACpE,kBACA,GAAI,EAAW,iBAAmB,GAAO,CAAC,0BAA0B,EAAI,CAAC,EACzE,eAEc,EAAE,KAAK,GAAG,GAC5B"}
@@ -1 +0,0 @@
1
- let e=require(`@robota-sdk/agent-framework`);function t(t){let n=(0,e.resetUserConfig)();n.deleted?t.writeLine(`Deleted ${n.path}`):t.writeLine(`No user settings found.`)}exports.runResetConfig=t;
@@ -1,2 +0,0 @@
1
- import{resetUserConfig as e}from"@robota-sdk/agent-framework";function t(t){let n=e();n.deleted?t.writeLine(`Deleted ${n.path}`):t.writeLine(`No user settings found.`)}export{t as runResetConfig};
2
- //# sourceMappingURL=reset-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reset-config.js","names":[],"sources":["../../../src/startup/reset-config.ts"],"sourcesContent":["import { resetUserConfig } from '@robota-sdk/agent-framework';\nimport type { ITerminalOutput } from '@robota-sdk/agent-core';\n\nexport function runResetConfig(terminal: ITerminalOutput): void {\n const result = resetUserConfig();\n if (result.deleted) {\n terminal.writeLine(`Deleted ${result.path}`);\n } else {\n terminal.writeLine('No user settings found.');\n }\n}\n"],"mappings":"8DAGA,SAAgB,EAAe,EAAiC,CAC9D,IAAM,EAAS,EAAgB,EAC3B,EAAO,QACT,EAAS,UAAU,WAAW,EAAO,MAAM,EAE3C,EAAS,UAAU,yBAAyB,CAEhD"}
@@ -1 +0,0 @@
1
- let e=require(`@robota-sdk/agent-framework`);function t(t,n){let r=n.noSessionPersistence?void 0:(0,e.createProjectSessionStore)(t),i,a=!1;if(n.continueMode)i=(0,e.resolveLatestSessionId)(r,t);else if(n.resumeId!==void 0){if(n.resumeId===``)a=!0;else if(i=(0,e.resolveSessionIdByIdOrName)(r,n.resumeId),i===void 0)throw Error(`Session not found: ${n.resumeId}`)}return{sessionStore:r,resumeSessionId:i,showSessionPickerOnStart:a}}exports.createSessionSetup=t;
@@ -1,2 +0,0 @@
1
- import{createProjectSessionStore as e,resolveLatestSessionId as t,resolveSessionIdByIdOrName as n}from"@robota-sdk/agent-framework";function r(r,i){let a=i.noSessionPersistence?void 0:e(r),o,s=!1;if(i.continueMode)o=t(a,r);else if(i.resumeId!==void 0){if(i.resumeId===``)s=!0;else if(o=n(a,i.resumeId),o===void 0)throw Error(`Session not found: ${i.resumeId}`)}return{sessionStore:a,resumeSessionId:o,showSessionPickerOnStart:s}}export{r as createSessionSetup};
2
- //# sourceMappingURL=session-setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-setup.js","names":[],"sources":["../../../src/startup/session-setup.ts"],"sourcesContent":["import type { IInteractiveSessionStore } from '@robota-sdk/agent-framework';\nimport {\n createProjectSessionStore,\n resolveLatestSessionId,\n resolveSessionIdByIdOrName,\n} from '@robota-sdk/agent-framework';\nimport type { ISessionRunOptions } from './args-to-options.js';\n\nexport interface ISessionSetup {\n sessionStore: IInteractiveSessionStore | undefined;\n resumeSessionId: string | undefined;\n showSessionPickerOnStart: boolean;\n}\n\nexport function createSessionSetup(cwd: string, opts: ISessionRunOptions): ISessionSetup {\n const sessionStore = opts.noSessionPersistence ? undefined : createProjectSessionStore(cwd);\n\n let resumeSessionId: string | undefined;\n let showSessionPickerOnStart = false;\n\n if (opts.continueMode) {\n resumeSessionId = resolveLatestSessionId(sessionStore, cwd);\n } else if (opts.resumeId !== undefined) {\n if (opts.resumeId === '') {\n showSessionPickerOnStart = true;\n } else {\n resumeSessionId = resolveSessionIdByIdOrName(sessionStore, opts.resumeId);\n if (resumeSessionId === undefined) {\n throw new Error(`Session not found: ${opts.resumeId}`);\n }\n }\n }\n\n return { sessionStore, resumeSessionId, showSessionPickerOnStart };\n}\n"],"mappings":"oIAcA,SAAgB,EAAmB,EAAa,EAAyC,CACvF,IAAM,EAAe,EAAK,qBAAuB,IAAA,GAAY,EAA0B,CAAG,EAEtF,EACA,EAA2B,GAE/B,GAAI,EAAK,aACP,EAAkB,EAAuB,EAAc,CAAG,OACrD,GAAI,EAAK,WAAa,IAAA,GAC3B,IAAI,EAAK,WAAa,GACpB,EAA2B,QAG3B,GADA,EAAkB,EAA2B,EAAc,EAAK,QAAQ,EACpE,IAAoB,IAAA,GACtB,MAAU,MAAM,sBAAsB,EAAK,UAAU,CAEzD,CAGF,MAAO,CAAE,eAAc,kBAAiB,0BAAyB,CACnE"}
@@ -1 +0,0 @@
1
- let e=require(`@robota-sdk/agent-subagent-runner`);function t(t){return{subagentRunnerFactory:(0,e.createChildProcessSubagentRunnerFactory)({providerConfig:t.providerConfig,logsDir:t.logsDir})}}exports.createSubagentSetup=t;
@@ -1,2 +0,0 @@
1
- import{createChildProcessSubagentRunnerFactory as e}from"@robota-sdk/agent-subagent-runner";function t(t){return{subagentRunnerFactory:e({providerConfig:t.providerConfig,logsDir:t.logsDir})}}export{t as createSubagentSetup};
2
- //# sourceMappingURL=subagent-setup.js.map