@finalai/final-agent-provider 0.10.1 → 0.11.0

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 (159) hide show
  1. package/HOSTING.md +334 -245
  2. package/README.md +126 -40
  3. package/WORKSPACE-EGRESS.md +11 -11
  4. package/dist/modules/catalog.d.mts +9 -0
  5. package/dist/modules/catalog.mjs +21 -0
  6. package/dist/modules/catalog.mjs.map +7 -0
  7. package/dist/modules/harnesses/acp-agent.d.mts +4 -0
  8. package/dist/modules/harnesses/acp-agent.mjs +35 -0
  9. package/dist/modules/harnesses/acp-agent.mjs.map +7 -0
  10. package/dist/modules/harnesses/adapters.d.mts +7 -0
  11. package/dist/modules/harnesses/adapters.mjs +74 -0
  12. package/dist/modules/harnesses/adapters.mjs.map +7 -0
  13. package/dist/modules/harnesses/claude-code.d.mts +14 -0
  14. package/dist/modules/harnesses/claude-code.mjs +79 -0
  15. package/dist/modules/harnesses/claude-code.mjs.map +7 -0
  16. package/dist/modules/harnesses/codex.d.mts +12 -0
  17. package/dist/modules/harnesses/codex.mjs +90 -0
  18. package/dist/modules/harnesses/codex.mjs.map +7 -0
  19. package/dist/modules/harnesses/config-fields.d.mts +98 -57
  20. package/dist/modules/harnesses/config-fields.mjs +58 -35
  21. package/dist/modules/harnesses/config-fields.mjs.map +3 -3
  22. package/dist/modules/harnesses/definitions.d.mts +3 -0
  23. package/dist/modules/harnesses/definitions.mjs +21 -0
  24. package/dist/modules/harnesses/definitions.mjs.map +7 -0
  25. package/dist/modules/harnesses/fidelity.d.mts +1 -1
  26. package/dist/modules/harnesses/fidelity.mjs +17 -14
  27. package/dist/modules/harnesses/fidelity.mjs.map +2 -2
  28. package/dist/modules/harnesses/final.d.mts +12 -0
  29. package/dist/modules/harnesses/final.mjs +70 -0
  30. package/dist/modules/harnesses/final.mjs.map +7 -0
  31. package/dist/modules/harnesses/index.d.mts +13 -12
  32. package/dist/modules/harnesses/index.mjs +86 -45
  33. package/dist/modules/harnesses/index.mjs.map +3 -3
  34. package/dist/modules/harnesses/names.d.mts +43 -0
  35. package/dist/modules/harnesses/names.mjs +59 -0
  36. package/dist/modules/harnesses/names.mjs.map +7 -0
  37. package/dist/modules/harnesses/nanocode-claude.d.mts +18 -0
  38. package/dist/modules/harnesses/nanocode-claude.mjs +101 -0
  39. package/dist/modules/harnesses/nanocode-claude.mjs.map +7 -0
  40. package/dist/modules/harnesses/nanocode-codex.d.mts +13 -0
  41. package/dist/modules/harnesses/nanocode-codex.mjs +64 -0
  42. package/dist/modules/harnesses/nanocode-codex.mjs.map +7 -0
  43. package/dist/modules/harnesses/pi.d.mts +12 -0
  44. package/dist/modules/harnesses/pi.mjs +71 -0
  45. package/dist/modules/harnesses/pi.mjs.map +7 -0
  46. package/dist/modules/integrations.d.mts +9 -0
  47. package/dist/modules/integrations.mjs +29 -0
  48. package/dist/modules/integrations.mjs.map +7 -0
  49. package/dist/modules/provider/general.bundle.d.mts +1 -0
  50. package/dist/modules/provider/general.bundle.mjs +5 -0
  51. package/dist/modules/provider/general.bundle.mjs.map +7 -0
  52. package/dist/modules/provider/general.d.mts +11 -0
  53. package/dist/modules/provider/general.mjs +130 -0
  54. package/dist/modules/provider/general.mjs.map +7 -0
  55. package/dist/modules/provider/index.d.mts +3 -0
  56. package/dist/modules/provider/index.mjs +13 -0
  57. package/dist/modules/provider/index.mjs.map +7 -0
  58. package/dist/modules/sandboxes/access.d.mts +34 -0
  59. package/dist/modules/sandboxes/access.mjs +15 -0
  60. package/dist/modules/sandboxes/access.mjs.map +7 -0
  61. package/dist/modules/sandboxes/computer.d.mts +24 -51
  62. package/dist/modules/sandboxes/computer.mjs +523 -888
  63. package/dist/modules/sandboxes/computer.mjs.map +3 -3
  64. package/dist/modules/sandboxes/computers-api.d.mts +3 -2
  65. package/dist/modules/sandboxes/computers-api.mjs +2 -4
  66. package/dist/modules/sandboxes/computers-api.mjs.map +2 -2
  67. package/dist/modules/sandboxes/device-api.d.mts +4 -3
  68. package/dist/modules/sandboxes/device-api.mjs +2 -4
  69. package/dist/modules/sandboxes/device-api.mjs.map +2 -2
  70. package/dist/modules/sandboxes/device.d.mts +6 -6
  71. package/dist/modules/sandboxes/device.mjs +126 -121
  72. package/dist/modules/sandboxes/device.mjs.map +3 -3
  73. package/dist/modules/sandboxes/egress.d.mts +10 -9
  74. package/dist/modules/sandboxes/egress.mjs +73 -56
  75. package/dist/modules/sandboxes/egress.mjs.map +2 -2
  76. package/dist/modules/sandboxes/environment.d.mts +35 -269
  77. package/dist/modules/sandboxes/environment.mjs +27 -104
  78. package/dist/modules/sandboxes/environment.mjs.map +3 -3
  79. package/dist/modules/sandboxes/index.d.mts +9 -69
  80. package/dist/modules/sandboxes/index.mjs +35 -95
  81. package/dist/modules/sandboxes/index.mjs.map +3 -3
  82. package/dist/modules/sandboxes/local.d.mts +28 -0
  83. package/dist/modules/sandboxes/local.mjs +499 -0
  84. package/dist/modules/sandboxes/local.mjs.map +7 -0
  85. package/dist/modules/sandboxes/session.d.mts +0 -3
  86. package/dist/modules/sandboxes/session.mjs +2 -22
  87. package/dist/modules/sandboxes/session.mjs.map +2 -2
  88. package/dist/modules/sandboxes/testing/fake-machine.mjs +0 -28
  89. package/dist/modules/sandboxes/testing/fake-machine.mjs.map +2 -2
  90. package/package.json +76 -104
  91. package/dist/modules/connections.d.mts +0 -11
  92. package/dist/modules/connections.mjs +0 -16
  93. package/dist/modules/connections.mjs.map +0 -7
  94. package/dist/modules/harnesses/acp-describe.d.mts +0 -20
  95. package/dist/modules/harnesses/acp-describe.mjs +0 -110
  96. package/dist/modules/harnesses/acp-describe.mjs.map +0 -7
  97. package/dist/modules/harnesses/local-stdio.d.mts +0 -47
  98. package/dist/modules/harnesses/local-stdio.mjs +0 -41
  99. package/dist/modules/harnesses/local-stdio.mjs.map +0 -7
  100. package/dist/modules/harnesses/remote-acp.d.mts +0 -76
  101. package/dist/modules/harnesses/remote-acp.mjs +0 -83
  102. package/dist/modules/harnesses/remote-acp.mjs.map +0 -7
  103. package/dist/modules/harnesses/remote-claude-code.d.mts +0 -88
  104. package/dist/modules/harnesses/remote-claude-code.mjs +0 -113
  105. package/dist/modules/harnesses/remote-claude-code.mjs.map +0 -7
  106. package/dist/modules/harnesses/remote-client-tls.d.mts +0 -35
  107. package/dist/modules/harnesses/remote-client-tls.mjs +0 -37
  108. package/dist/modules/harnesses/remote-client-tls.mjs.map +0 -7
  109. package/dist/modules/harnesses/remote-codex.d.mts +0 -98
  110. package/dist/modules/harnesses/remote-codex.mjs +0 -128
  111. package/dist/modules/harnesses/remote-codex.mjs.map +0 -7
  112. package/dist/modules/harnesses/remote-pi.d.mts +0 -78
  113. package/dist/modules/harnesses/remote-pi.mjs +0 -104
  114. package/dist/modules/harnesses/remote-pi.mjs.map +0 -7
  115. package/dist/modules/harnesses/remote-url.d.mts +0 -5
  116. package/dist/modules/harnesses/remote-url.mjs +0 -19
  117. package/dist/modules/harnesses/remote-url.mjs.map +0 -7
  118. package/dist/modules/harnesses/serverless-final.d.mts +0 -63
  119. package/dist/modules/harnesses/serverless-final.mjs +0 -88
  120. package/dist/modules/harnesses/serverless-final.mjs.map +0 -7
  121. package/dist/modules/harnesses/serverless-nanocode-claude.d.mts +0 -64
  122. package/dist/modules/harnesses/serverless-nanocode-claude.mjs +0 -105
  123. package/dist/modules/harnesses/serverless-nanocode-claude.mjs.map +0 -7
  124. package/dist/modules/harnesses/serverless-nanocode-codex.d.mts +0 -66
  125. package/dist/modules/harnesses/serverless-nanocode-codex.mjs +0 -113
  126. package/dist/modules/harnesses/serverless-nanocode-codex.mjs.map +0 -7
  127. package/dist/modules/harnesses/serverless-pi.d.mts +0 -64
  128. package/dist/modules/harnesses/serverless-pi.mjs +0 -98
  129. package/dist/modules/harnesses/serverless-pi.mjs.map +0 -7
  130. package/dist/modules/runtime/index.d.mts +0 -7
  131. package/dist/modules/runtime/index.mjs +0 -18
  132. package/dist/modules/runtime/index.mjs.map +0 -7
  133. package/dist/modules/runtime/local-stdio.d.mts +0 -10
  134. package/dist/modules/runtime/local-stdio.mjs +0 -106
  135. package/dist/modules/runtime/local-stdio.mjs.map +0 -7
  136. package/dist/modules/runtime/remote-acp.d.mts +0 -16
  137. package/dist/modules/runtime/remote-acp.mjs +0 -152
  138. package/dist/modules/runtime/remote-acp.mjs.map +0 -7
  139. package/dist/modules/runtime/remote-claude-code.d.mts +0 -5
  140. package/dist/modules/runtime/remote-claude-code.mjs +0 -47
  141. package/dist/modules/runtime/remote-claude-code.mjs.map +0 -7
  142. package/dist/modules/runtime/remote-codex.d.mts +0 -5
  143. package/dist/modules/runtime/remote-codex.mjs +0 -47
  144. package/dist/modules/runtime/remote-codex.mjs.map +0 -7
  145. package/dist/modules/runtime/remote-host.d.mts +0 -127
  146. package/dist/modules/runtime/remote-host.mjs +0 -387
  147. package/dist/modules/runtime/remote-host.mjs.map +0 -7
  148. package/dist/modules/runtime/remote-pi.d.mts +0 -5
  149. package/dist/modules/runtime/remote-pi.mjs +0 -44
  150. package/dist/modules/runtime/remote-pi.mjs.map +0 -7
  151. package/dist/modules/sandboxes/guide.d.mts +0 -35
  152. package/dist/modules/sandboxes/guide.mjs +0 -119
  153. package/dist/modules/sandboxes/guide.mjs.map +0 -7
  154. package/dist/modules/sandboxes/workspace-setup.d.mts +0 -42
  155. package/dist/modules/sandboxes/workspace-setup.mjs +0 -242
  156. package/dist/modules/sandboxes/workspace-setup.mjs.map +0 -7
  157. package/dist/modules/testing/harness.d.mts +0 -9
  158. package/dist/modules/testing/harness.mjs +0 -123
  159. package/dist/modules/testing/harness.mjs.map +0 -7
@@ -0,0 +1,90 @@
1
+ import { defineHarness } from "@finalai/agent-definition/authoring";
2
+ import {
3
+ CredentialDelivery,
4
+ HarnessFeature,
5
+ InferenceSourceKind,
6
+ McpTransportKind,
7
+ PermissionLevel,
8
+ PromptWhileRunning,
9
+ SandboxWire
10
+ } from "@finalai/agent-provider";
11
+ import {
12
+ configObjectJson,
13
+ harnessSettings,
14
+ inferenceJson,
15
+ permissionModeJson,
16
+ reasoningJson,
17
+ ReasoningLevel
18
+ } from "./config-fields.mjs";
19
+ import { ModelVendor } from "./model-reference.mjs";
20
+ import { FinalAcpAdapter, FinalHarness, FinalHarnessInterface } from "./names.mjs";
21
+ const CODEX_APP_SERVER_REASONING_LEVELS = [
22
+ ReasoningLevel.Minimal,
23
+ ReasoningLevel.Low,
24
+ ReasoningLevel.Medium,
25
+ ReasoningLevel.High
26
+ ];
27
+ const CODEX_HARNESS = defineHarness({
28
+ title: "Codex",
29
+ description: "The Codex app-server, run as a process on the machine it works on.",
30
+ configurationSchema: configObjectJson({
31
+ title: "Codex",
32
+ properties: {
33
+ model: { $ref: "final://schemas/model-picker", type: "string", minLength: 1 },
34
+ reasoning: reasoningJson(CODEX_APP_SERVER_REASONING_LEVELS),
35
+ inference: inferenceJson(),
36
+ permissionMode: permissionModeJson()
37
+ }
38
+ }),
39
+ // The app-server's approvals cannot carry an agent's per-tool policy.
40
+ features: [HarnessFeature.Skills, HarnessFeature.McpTools, HarnessFeature.SystemInstructions],
41
+ lowestPermission: PermissionLevel.Ask,
42
+ inference: {
43
+ vendors: [ModelVendor.OpenAI],
44
+ kinds: [
45
+ InferenceSourceKind.Harness,
46
+ InferenceSourceKind.Subscription,
47
+ InferenceSourceKind.ApiKey,
48
+ InferenceSourceKind.Final
49
+ ],
50
+ delivery: CredentialDelivery.AtOpen
51
+ },
52
+ native: {
53
+ files: { tools: ["apply_patch"] },
54
+ shell: { tools: ["exec_command", "write_stdin"] }
55
+ },
56
+ interface: FinalHarnessInterface.CodexAppServer,
57
+ adapter: FinalAcpAdapter.Codex,
58
+ run: {
59
+ process: {
60
+ command: "codex",
61
+ args: [
62
+ "app-server",
63
+ { when: "configuration.model", args: ["-c", "model={{configuration.model}}"] },
64
+ {
65
+ when: "configuration.reasoning",
66
+ args: ["-c", "model_reasoning_effort={{configuration.reasoning}}"]
67
+ }
68
+ ]
69
+ }
70
+ },
71
+ // The adapter proxies every MCP server it is handed (acp ones over the ACP connection)
72
+ // and reports full tool results.
73
+ mcp: [McpTransportKind.Acp, McpTransportKind.Http, McpTransportKind.Stdio],
74
+ consumes: [SandboxWire.Mcp],
75
+ supports: { observe: true, resumeReplay: true, fork: true, authorMeta: true },
76
+ // The adapter steers it into the running turn (turn/steer); one idle ends both.
77
+ promptWhileRunning: PromptWhileRunning.Inject,
78
+ // Its stdio belongs to the session service's connection to the sandbox.
79
+ sessionSurvivesDisconnect: false
80
+ });
81
+ const codex = ({
82
+ environment,
83
+ ...configuration
84
+ } = {}) => harnessSettings({ harness: FinalHarness.Codex, configuration, environment });
85
+ export {
86
+ CODEX_APP_SERVER_REASONING_LEVELS,
87
+ CODEX_HARNESS,
88
+ codex
89
+ };
90
+ //# sourceMappingURL=codex.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/harnesses/codex.ts"],
4
+ "sourcesContent": ["import { defineHarness } from '@finalai/agent-definition/authoring';\nimport {\n CredentialDelivery,\n HarnessFeature,\n InferenceSourceKind,\n McpTransportKind,\n PermissionLevel,\n PromptWhileRunning,\n SandboxWire,\n type HarnessDefinitionIface,\n type HarnessEnvironmentIface,\n type HarnessSettingsIface,\n} from '@finalai/agent-provider';\nimport {\n configObjectJson,\n harnessSettings,\n inferenceJson,\n permissionModeJson,\n reasoningJson,\n ReasoningLevel,\n type InferenceInput,\n type PermissionInput,\n} from \"./config-fields.mjs\";\nimport { ModelVendor } from \"./model-reference.mjs\";\nimport { FinalAcpAdapter, FinalHarness, FinalHarnessInterface } from \"./names.mjs\";\n\n// The Codex app-server as a process on a machine, behind Final's ACP adapter.\n// Its own file and shell tools work on the machine it runs on, which is\n// therefore the sandbox provided for `files` and `shell`.\n\n// What the app-server takes as model_reasoning_effort.\nexport const CODEX_APP_SERVER_REASONING_LEVELS = [\n ReasoningLevel.Minimal,\n ReasoningLevel.Low,\n ReasoningLevel.Medium,\n ReasoningLevel.High,\n] as const;\n\nexport const CODEX_HARNESS: HarnessDefinitionIface = defineHarness({\n title: 'Codex',\n description: 'The Codex app-server, run as a process on the machine it works on.',\n configurationSchema: configObjectJson({\n title: 'Codex',\n properties: {\n model: { $ref: 'final://schemas/model-picker', type: 'string', minLength: 1 },\n reasoning: reasoningJson(CODEX_APP_SERVER_REASONING_LEVELS),\n inference: inferenceJson(),\n permissionMode: permissionModeJson(),\n },\n }),\n // The app-server's approvals cannot carry an agent's per-tool policy.\n features: [HarnessFeature.Skills, HarnessFeature.McpTools, HarnessFeature.SystemInstructions],\n lowestPermission: PermissionLevel.Ask,\n inference: {\n vendors: [ModelVendor.OpenAI],\n kinds: [\n InferenceSourceKind.Harness,\n InferenceSourceKind.Subscription,\n InferenceSourceKind.ApiKey,\n InferenceSourceKind.Final,\n ],\n delivery: CredentialDelivery.AtOpen,\n },\n native: {\n files: { tools: ['apply_patch'] },\n shell: { tools: ['exec_command', 'write_stdin'] },\n },\n interface: FinalHarnessInterface.CodexAppServer,\n adapter: FinalAcpAdapter.Codex,\n run: {\n process: {\n command: 'codex',\n args: [\n 'app-server',\n { when: 'configuration.model', args: ['-c', 'model={{configuration.model}}'] },\n {\n when: 'configuration.reasoning',\n args: ['-c', 'model_reasoning_effort={{configuration.reasoning}}'],\n },\n ],\n },\n },\n // The adapter proxies every MCP server it is handed (acp ones over the ACP connection)\n // and reports full tool results.\n mcp: [McpTransportKind.Acp, McpTransportKind.Http, McpTransportKind.Stdio],\n consumes: [SandboxWire.Mcp],\n supports: { observe: true, resumeReplay: true, fork: true, authorMeta: true },\n // The adapter steers it into the running turn (turn/steer); one idle ends both.\n promptWhileRunning: PromptWhileRunning.Inject,\n // Its stdio belongs to the session service's connection to the sandbox.\n sessionSurvivesDisconnect: false,\n});\n\nexport interface CodexInputIface {\n model?: string;\n reasoning?:\n | (typeof CODEX_APP_SERVER_REASONING_LEVELS)[number]\n | `${(typeof CODEX_APP_SERVER_REASONING_LEVELS)[number]}`;\n // Absent: only the CLI's own login on the machine.\n inference?: InferenceInput;\n permissionMode?: PermissionInput;\n // The sandbox it runs in (absent: the one provided for `shell`), or an ACP\n // endpoint already running it: `atUrl({ url, hop })`.\n environment?: HarnessEnvironmentIface;\n}\n\nexport const codex = ({\n environment,\n ...configuration\n}: CodexInputIface = {}): HarnessSettingsIface =>\n harnessSettings({ harness: FinalHarness.Codex, configuration, environment });\n"],
5
+ "mappings": "AAAA,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,cAAc,6BAA6B;AAO9D,MAAM,oCAAoC;AAAA,EAC/C,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;AAEO,MAAM,gBAAwC,cAAc;AAAA,EACjE,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB,iBAAiB;AAAA,IACpC,OAAO;AAAA,IACP,YAAY;AAAA,MACV,OAAO,EAAE,MAAM,gCAAgC,MAAM,UAAU,WAAW,EAAE;AAAA,MAC5E,WAAW,cAAc,iCAAiC;AAAA,MAC1D,WAAW,cAAc;AAAA,MACzB,gBAAgB,mBAAmB;AAAA,IACrC;AAAA,EACF,CAAC;AAAA;AAAA,EAED,UAAU,CAAC,eAAe,QAAQ,eAAe,UAAU,eAAe,kBAAkB;AAAA,EAC5F,kBAAkB,gBAAgB;AAAA,EAClC,WAAW;AAAA,IACT,SAAS,CAAC,YAAY,MAAM;AAAA,IAC5B,OAAO;AAAA,MACL,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,IACtB;AAAA,IACA,UAAU,mBAAmB;AAAA,EAC/B;AAAA,EACA,QAAQ;AAAA,IACN,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;AAAA,IAChC,OAAO,EAAE,OAAO,CAAC,gBAAgB,aAAa,EAAE;AAAA,EAClD;AAAA,EACA,WAAW,sBAAsB;AAAA,EACjC,SAAS,gBAAgB;AAAA,EACzB,KAAK;AAAA,IACH,SAAS;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,QACJ;AAAA,QACA,EAAE,MAAM,uBAAuB,MAAM,CAAC,MAAM,+BAA+B,EAAE;AAAA,QAC7E;AAAA,UACE,MAAM;AAAA,UACN,MAAM,CAAC,MAAM,oDAAoD;AAAA,QACnE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA,EAGA,KAAK,CAAC,iBAAiB,KAAK,iBAAiB,MAAM,iBAAiB,KAAK;AAAA,EACzE,UAAU,CAAC,YAAY,GAAG;AAAA,EAC1B,UAAU,EAAE,SAAS,MAAM,cAAc,MAAM,MAAM,MAAM,YAAY,KAAK;AAAA;AAAA,EAE5E,oBAAoB,mBAAmB;AAAA;AAAA,EAEvC,2BAA2B;AAC7B,CAAC;AAeM,MAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA,GAAG;AACL,IAAqB,CAAC,MACpB,gBAAgB,EAAE,SAAS,aAAa,OAAO,eAAe,YAAY,CAAC;",
6
+ "names": []
7
+ }
@@ -1,4 +1,4 @@
1
- import { type CredentialPolicyIface, type DynamicSlotIface, type InstructionFragmentIface, type JsonObject, type JsonSchema, type JsonValue, type PackageProviderRefIface, type SkillBundleIface } from '@finalai/agent-provider';
1
+ import { PermissionLevel, type HarnessSettingsIface, type InferenceSource, type JsonObject, type JsonSchema, type JsonValue, type HarnessEnvironmentIface } from '@finalai/agent-provider';
2
2
  import * as z from 'zod';
3
3
  export { MODEL_REFERENCE_PATTERN } from "./model-reference.mjs";
4
4
  export declare enum ReasoningLevel {
@@ -27,7 +27,7 @@ export declare enum CodexApprovalPolicy {
27
27
  OnFailure = "on-failure",
28
28
  Never = "never"
29
29
  }
30
- export declare enum CodexApprovalsReviewer {
30
+ export declare enum ApprovalsReviewer {
31
31
  User = "user",
32
32
  AutoReview = "auto-review"
33
33
  }
@@ -39,8 +39,11 @@ export declare enum CodexSandboxMode {
39
39
  export interface SecretRefIface {
40
40
  secretKey: string;
41
41
  }
42
- export type InstructionInput = InstructionFragmentIface | DynamicSlotIface;
43
- export type SkillInput = SkillBundleIface | DynamicSlotIface;
42
+ export type PermissionInput = PermissionLevel | `${PermissionLevel}`;
43
+ export type InferenceInput = InferenceSource | readonly InferenceSource[];
44
+ export declare const piPermissionModeFor: (level: PermissionLevel) => PiPermissionMode;
45
+ export declare const claudePermissionModeFor: (level: PermissionLevel, reviewer?: ApprovalsReviewer) => ClaudePermissionMode;
46
+ export declare const codexApprovalPolicyFor: (level: PermissionLevel) => CodexApprovalPolicy;
44
47
  export declare const configObjectJson: (args: {
45
48
  title: string;
46
49
  properties: Record<string, JsonSchema>;
@@ -48,71 +51,109 @@ export declare const configObjectJson: (args: {
48
51
  }) => JsonSchema;
49
52
  export declare const modelJson: (ids?: readonly string[], defaultId?: string) => JsonSchema;
50
53
  export declare const reasoningJson: (levels: readonly ReasoningLevel[]) => JsonSchema;
51
- export declare const credentialsJson: () => JsonSchema;
52
- export declare const permissionModeJson: (modes: readonly string[], defaultMode?: string) => JsonSchema;
53
- export declare const instructionsJson: () => JsonSchema;
54
- export declare const skillsJson: () => JsonSchema;
54
+ export declare const inferenceJson: () => JsonSchema;
55
+ export declare const permissionModeJson: () => JsonSchema;
56
+ export declare const approvalsReviewerJson: () => JsonSchema;
55
57
  export declare const secretRefJson: () => JsonSchema;
56
58
  export declare const urlJson: (title: string, schemes: readonly string[]) => JsonSchema;
57
59
  export declare const absolutePathJson: (title: string) => JsonSchema;
58
60
  export declare const modelZod: (ids?: readonly string[]) => z.ZodString;
59
61
  export declare const reasoningZod: (levels: readonly ReasoningLevel[]) => z.ZodEnum<typeof ReasoningLevel>;
60
- export declare const credentialsZod: () => z.ZodObject<{
61
- payer: z.ZodEnum<typeof import("@finalai/agent-provider").CredentialPayer>;
62
- tryInOrder: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
63
- kind: z.ZodLiteral<import("@finalai/agent-provider").CredentialNodeKind.Subscription>;
64
- owner: z.ZodEnum<typeof import("@finalai/agent-provider").CredentialOwner>;
65
- vendor: z.ZodOptional<z.ZodString>;
66
- pin: z.ZodOptional<z.ZodString>;
67
- }, z.core.$strip>, z.ZodObject<{
68
- kind: z.ZodLiteral<import("@finalai/agent-provider").CredentialNodeKind.ApiKey>;
69
- secret: z.ZodString;
70
- baseUrl: z.ZodOptional<z.ZodString>;
71
- vendor: z.ZodOptional<z.ZodString>;
72
- }, z.core.$strip>, z.ZodObject<{
73
- pin: z.ZodOptional<z.ZodString>;
74
- kind: z.ZodLiteral<import("@finalai/agent-provider").CredentialNodeKind.ApiKey>;
75
- owner: z.ZodEnum<typeof import("@finalai/agent-provider").CredentialOwner>;
76
- vendor: z.ZodOptional<z.ZodString>;
77
- }, z.core.$strip>, z.ZodObject<{
78
- kind: z.ZodLiteral<import("@finalai/agent-provider").CredentialNodeKind.Platform>;
79
- budget: z.ZodOptional<z.ZodString>;
80
- }, z.core.$strip>, z.ZodObject<{
81
- kind: z.ZodLiteral<import("@finalai/agent-provider").CredentialNodeKind.HarnessOwned>;
82
- }, z.core.$strip>, z.ZodObject<{
83
- kind: z.ZodLiteral<import("@finalai/agent-provider").CredentialNodeKind.Custom>;
84
- resolver: z.ZodString;
85
- events: z.ZodDefault<z.ZodArray<z.ZodEnum<typeof import("@finalai/agent-provider").DynamicEvent>>>;
86
- }, z.core.$strip>]>>;
87
- }, z.core.$strip>;
88
- export declare const instructionsZod: () => z.ZodDefault<z.ZodArray<z.ZodObject<{
89
- role: z.ZodEnum<typeof import("@finalai/agent-provider").InstructionRole>;
90
- content: z.ZodString;
91
- source: z.ZodOptional<z.ZodString>;
92
- }, z.core.$strip>>>;
93
- export declare const skillsZod: () => z.ZodDefault<z.ZodArray<z.ZodObject<{
94
- key: z.ZodString;
95
- description: z.ZodOptional<z.ZodString>;
96
- files: z.ZodArray<z.ZodObject<{
97
- path: z.ZodString;
98
- content: z.ZodString;
99
- }, z.core.$strip>>;
100
- }, z.core.$strip>>>;
62
+ export declare const inferenceZod: () => z.ZodPipe<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
63
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.Subscription>;
64
+ credential: z.ZodDefault<z.ZodEnum<typeof import("@finalai/agent-provider").CredentialScope>>;
65
+ vendor: z.ZodOptional<z.ZodString>;
66
+ }, z.core.$strict>, z.ZodObject<{
67
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.ApiKey>;
68
+ secret: z.ZodString;
69
+ baseUrl: z.ZodOptional<z.ZodString>;
70
+ vendor: z.ZodOptional<z.ZodString>;
71
+ }, z.core.$strict>, z.ZodObject<{
72
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.Final>;
73
+ billTo: z.ZodDefault<z.ZodEnum<typeof import("@finalai/agent-provider").InferenceBillTo>>;
74
+ budget: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$strict>, z.ZodObject<{
76
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.Harness>;
77
+ }, z.core.$strict>], "source">, z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
78
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.Subscription>;
79
+ credential: z.ZodDefault<z.ZodEnum<typeof import("@finalai/agent-provider").CredentialScope>>;
80
+ vendor: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$strict>, z.ZodObject<{
82
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.ApiKey>;
83
+ secret: z.ZodString;
84
+ baseUrl: z.ZodOptional<z.ZodString>;
85
+ vendor: z.ZodOptional<z.ZodString>;
86
+ }, z.core.$strict>, z.ZodObject<{
87
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.Final>;
88
+ billTo: z.ZodDefault<z.ZodEnum<typeof import("@finalai/agent-provider").InferenceBillTo>>;
89
+ budget: z.ZodOptional<z.ZodString>;
90
+ }, z.core.$strict>, z.ZodObject<{
91
+ source: z.ZodLiteral<import("@finalai/agent-provider").InferenceSourceKind.Harness>;
92
+ }, z.core.$strict>], "source">>]>, z.ZodTransform<({
93
+ source: import("@finalai/agent-provider").InferenceSourceKind.Subscription;
94
+ credential: import("@finalai/agent-provider").CredentialScope;
95
+ vendor?: string | undefined;
96
+ } | {
97
+ source: import("@finalai/agent-provider").InferenceSourceKind.ApiKey;
98
+ secret: string;
99
+ baseUrl?: string | undefined;
100
+ vendor?: string | undefined;
101
+ } | {
102
+ source: import("@finalai/agent-provider").InferenceSourceKind.Final;
103
+ billTo: import("@finalai/agent-provider").InferenceBillTo;
104
+ budget?: string | undefined;
105
+ } | {
106
+ source: import("@finalai/agent-provider").InferenceSourceKind.Harness;
107
+ })[], {
108
+ source: import("@finalai/agent-provider").InferenceSourceKind.Subscription;
109
+ credential: import("@finalai/agent-provider").CredentialScope;
110
+ vendor?: string | undefined;
111
+ } | {
112
+ source: import("@finalai/agent-provider").InferenceSourceKind.ApiKey;
113
+ secret: string;
114
+ baseUrl?: string | undefined;
115
+ vendor?: string | undefined;
116
+ } | {
117
+ source: import("@finalai/agent-provider").InferenceSourceKind.Final;
118
+ billTo: import("@finalai/agent-provider").InferenceBillTo;
119
+ budget?: string | undefined;
120
+ } | {
121
+ source: import("@finalai/agent-provider").InferenceSourceKind.Harness;
122
+ } | ({
123
+ source: import("@finalai/agent-provider").InferenceSourceKind.Subscription;
124
+ credential: import("@finalai/agent-provider").CredentialScope;
125
+ vendor?: string | undefined;
126
+ } | {
127
+ source: import("@finalai/agent-provider").InferenceSourceKind.ApiKey;
128
+ secret: string;
129
+ baseUrl?: string | undefined;
130
+ vendor?: string | undefined;
131
+ } | {
132
+ source: import("@finalai/agent-provider").InferenceSourceKind.Final;
133
+ billTo: import("@finalai/agent-provider").InferenceBillTo;
134
+ budget?: string | undefined;
135
+ } | {
136
+ source: import("@finalai/agent-provider").InferenceSourceKind.Harness;
137
+ })[]>>;
138
+ export declare const permissionModeZod: () => z.ZodEnum<typeof PermissionLevel>;
139
+ export declare const approvalsReviewerZod: () => z.ZodEnum<typeof ApprovalsReviewer>;
101
140
  export declare const secretRefZod: () => z.ZodObject<{
102
141
  secretKey: z.ZodString;
103
142
  }, z.core.$strip>;
104
143
  export declare const urlZod: (schemes: readonly string[]) => z.ZodString;
105
144
  export declare const absolutePathZod: () => z.ZodString;
106
145
  export declare const parseHarnessConfig: <T extends z.ZodType>(args: {
107
- specifier: string;
146
+ harness: string;
108
147
  schema: T;
109
- config: JsonValue;
148
+ config: unknown;
110
149
  }) => z.output<T>;
111
150
  export declare const toJsonValue: <Value>(value: Value) => JsonValue;
112
151
  export declare const toJsonObject: <Value>(value: Value) => JsonObject;
113
- export type CredentialsInput = CredentialPolicyIface;
114
- export interface HarnessBindingOutputIface {
115
- harness: PackageProviderRefIface;
116
- config: object;
117
- }
118
- export declare const harnessBinding: <Config extends object>(specifier: string, config: Config) => HarnessBindingOutputIface;
152
+ export declare const harnessSettings: (args: {
153
+ harness: string;
154
+ adapter?: string;
155
+ configuration: {
156
+ inference?: InferenceInput;
157
+ } & Record<string, unknown>;
158
+ environment?: HarnessEnvironmentIface;
159
+ }) => HarnessSettingsIface;
@@ -1,14 +1,12 @@
1
- import { MODEL_REFERENCE_PATTERN } from "./model-reference.mjs";
2
1
  import {
3
- credentialPolicySchema,
4
- instructionFragmentSchema,
2
+ inferenceSchema,
5
3
  jsonObjectSchema,
6
4
  jsonValueSchema,
7
- packageRef,
8
- SCHEMA_IDS,
9
- skillBundleSchema
5
+ PermissionLevel,
6
+ SCHEMA_IDS
10
7
  } from "@finalai/agent-provider";
11
8
  import * as z from "zod";
9
+ import { MODEL_REFERENCE_PATTERN } from "./model-reference.mjs";
12
10
  import { MODEL_REFERENCE_PATTERN as MODEL_REFERENCE_PATTERN2 } from "./model-reference.mjs";
13
11
  var ReasoningLevel = /* @__PURE__ */ ((ReasoningLevel2) => {
14
12
  ReasoningLevel2["None"] = "none";
@@ -40,17 +38,24 @@ var CodexApprovalPolicy = /* @__PURE__ */ ((CodexApprovalPolicy2) => {
40
38
  CodexApprovalPolicy2["Never"] = "never";
41
39
  return CodexApprovalPolicy2;
42
40
  })(CodexApprovalPolicy || {});
43
- var CodexApprovalsReviewer = /* @__PURE__ */ ((CodexApprovalsReviewer2) => {
44
- CodexApprovalsReviewer2["User"] = "user";
45
- CodexApprovalsReviewer2["AutoReview"] = "auto-review";
46
- return CodexApprovalsReviewer2;
47
- })(CodexApprovalsReviewer || {});
41
+ var ApprovalsReviewer = /* @__PURE__ */ ((ApprovalsReviewer2) => {
42
+ ApprovalsReviewer2["User"] = "user";
43
+ ApprovalsReviewer2["AutoReview"] = "auto-review";
44
+ return ApprovalsReviewer2;
45
+ })(ApprovalsReviewer || {});
48
46
  var CodexSandboxMode = /* @__PURE__ */ ((CodexSandboxMode2) => {
49
47
  CodexSandboxMode2["ReadOnly"] = "read-only";
50
48
  CodexSandboxMode2["WorkspaceWrite"] = "workspace-write";
51
49
  CodexSandboxMode2["DangerFullAccess"] = "danger-full-access";
52
50
  return CodexSandboxMode2;
53
51
  })(CodexSandboxMode || {});
52
+ const piPermissionModeFor = (level) => level === PermissionLevel.Auto ? "auto" /* Auto */ : "ask" /* Ask */;
53
+ const claudePermissionModeFor = (level, reviewer = "user" /* User */) => {
54
+ if (level === PermissionLevel.Auto) return "bypass" /* Bypass */;
55
+ if (reviewer === "auto-review" /* AutoReview */) return "auto" /* Auto */;
56
+ return level === PermissionLevel.Review ? "accept-edits" /* AcceptEdits */ : "default" /* Default */;
57
+ };
58
+ const codexApprovalPolicyFor = (level) => level === PermissionLevel.Auto ? "never" /* Never */ : level === PermissionLevel.Review ? "on-request" /* OnRequest */ : "untrusted" /* Untrusted */;
54
59
  const configObjectJson = (args) => ({
55
60
  type: "object",
56
61
  title: args.title,
@@ -68,14 +73,17 @@ const reasoningJson = (levels) => ({
68
73
  $ref: SCHEMA_IDS.reasoning,
69
74
  enum: [...levels]
70
75
  });
71
- const credentialsJson = () => ({ $ref: SCHEMA_IDS.credentialPolicy });
72
- const permissionModeJson = (modes, defaultMode) => {
73
- const schema = { $ref: SCHEMA_IDS.permissionMode, enum: [...modes] };
74
- if (defaultMode != null) schema.default = defaultMode;
75
- return schema;
76
- };
77
- const instructionsJson = () => ({ $ref: SCHEMA_IDS.instructions });
78
- const skillsJson = () => ({ $ref: SCHEMA_IDS.skills });
76
+ const inferenceJson = () => ({ $ref: SCHEMA_IDS.inference });
77
+ const permissionModeJson = () => ({
78
+ $ref: SCHEMA_IDS.permissionMode,
79
+ enum: Object.values(PermissionLevel)
80
+ });
81
+ const approvalsReviewerJson = () => ({
82
+ type: "string",
83
+ title: "Approvals reviewer",
84
+ enum: Object.values(ApprovalsReviewer),
85
+ default: "user" /* User */
86
+ });
79
87
  const secretRefJson = () => ({ $ref: SCHEMA_IDS.secretRef });
80
88
  const urlJson = (title, schemes) => ({
81
89
  type: "string",
@@ -101,9 +109,9 @@ const modelZod = (ids) => {
101
109
  const reasoningZod = (levels) => z.nativeEnum(ReasoningLevel).refine((level) => levels.includes(level), {
102
110
  message: `reasoning must be one of: ${levels.join(", ")}`
103
111
  });
104
- const credentialsZod = () => credentialPolicySchema;
105
- const instructionsZod = () => z.array(instructionFragmentSchema).default([]);
106
- const skillsZod = () => z.array(skillBundleSchema).default([]);
112
+ const inferenceZod = () => inferenceSchema;
113
+ const permissionModeZod = () => z.nativeEnum(PermissionLevel);
114
+ const approvalsReviewerZod = () => z.nativeEnum(ApprovalsReviewer);
107
115
  const secretRefZod = () => z.object({ secretKey: z.string().min(1) });
108
116
  const urlZod = (schemes) => z.string().url().refine((value) => schemes.some((scheme) => value.startsWith(`${scheme}://`)), {
109
117
  message: `url must use one of: ${schemes.join(", ")}`
@@ -113,40 +121,55 @@ const parseHarnessConfig = (args) => {
113
121
  const parsed = args.schema.safeParse(args.config);
114
122
  if (parsed.success) return parsed.data;
115
123
  const issues = parsed.error.issues.map((issue) => `${issue.path.join(".") || "(root)"}: ${issue.message}`).join("; ");
116
- throw new Error(`invalid config for ${args.specifier}: ${issues}`);
124
+ throw new Error(`invalid configuration for ${args.harness}: ${issues}`);
117
125
  };
118
126
  const toJsonValue = (value) => jsonValueSchema.parse(JSON.parse(JSON.stringify(value)));
119
127
  const toJsonObject = (value) => jsonObjectSchema.parse(JSON.parse(JSON.stringify(value)));
120
- const harnessBinding = (specifier, config) => ({
121
- harness: packageRef(specifier),
122
- config: { ...config }
123
- });
128
+ const inferenceList = (inference) => {
129
+ if (inference == null) return void 0;
130
+ const list = Array.isArray(inference) ? [...inference] : [inference];
131
+ if (list.length === 0) throw new Error("inference lists at least one source");
132
+ return list;
133
+ };
134
+ const harnessSettings = (args) => {
135
+ const { inference, ...rest } = args.configuration;
136
+ const list = inferenceList(inference);
137
+ const environment = args.environment;
138
+ return {
139
+ harness: args.harness,
140
+ ...args.adapter == null ? {} : { adapter: args.adapter },
141
+ configuration: toJsonObject({ ...rest, ...list == null ? {} : { inference: list } }),
142
+ ...environment == null ? {} : { environment: typeof environment === "string" ? environment : { ...environment } }
143
+ };
144
+ };
124
145
  export {
146
+ ApprovalsReviewer,
125
147
  ClaudePermissionMode,
126
148
  CodexApprovalPolicy,
127
- CodexApprovalsReviewer,
128
149
  CodexSandboxMode,
129
150
  MODEL_REFERENCE_PATTERN2 as MODEL_REFERENCE_PATTERN,
130
151
  PiPermissionMode,
131
152
  ReasoningLevel,
132
153
  absolutePathJson,
133
154
  absolutePathZod,
155
+ approvalsReviewerJson,
156
+ approvalsReviewerZod,
157
+ claudePermissionModeFor,
158
+ codexApprovalPolicyFor,
134
159
  configObjectJson,
135
- credentialsJson,
136
- credentialsZod,
137
- harnessBinding,
138
- instructionsJson,
139
- instructionsZod,
160
+ harnessSettings,
161
+ inferenceJson,
162
+ inferenceZod,
140
163
  modelJson,
141
164
  modelZod,
142
165
  parseHarnessConfig,
143
166
  permissionModeJson,
167
+ permissionModeZod,
168
+ piPermissionModeFor,
144
169
  reasoningJson,
145
170
  reasoningZod,
146
171
  secretRefJson,
147
172
  secretRefZod,
148
- skillsJson,
149
- skillsZod,
150
173
  toJsonObject,
151
174
  toJsonValue,
152
175
  urlJson,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/harnesses/config-fields.ts"],
4
- "sourcesContent": ["import { MODEL_REFERENCE_PATTERN } from \"./model-reference.mjs\";\nimport {\n credentialPolicySchema,\n instructionFragmentSchema,\n jsonObjectSchema,\n jsonValueSchema,\n packageRef,\n SCHEMA_IDS,\n skillBundleSchema,\n type CredentialPolicyIface,\n type DynamicSlotIface,\n type InstructionFragmentIface,\n type JsonObject,\n type JsonSchema,\n type JsonValue,\n type PackageProviderRefIface,\n type SkillBundleIface,\n} from '@finalai/agent-provider';\nimport * as z from 'zod';\n\nexport { MODEL_REFERENCE_PATTERN } from \"./model-reference.mjs\";\n\n// Config-schema building blocks shared by the harness modules. Each harness\n// writes its JSON Schema (what Build renders, $ref-ing the shared\n// final://schemas/* fragments) and a zod mirror (what open() validates the\n// resolved config with) from these, and a test keeps the two aligned.\n\n// Mirrors the final://schemas/reasoning fragment's enum.\nexport enum ReasoningLevel {\n None = 'none',\n Minimal = 'minimal',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n Max = 'max',\n}\n\n// Pi and the Final harness.\nexport enum PiPermissionMode {\n Auto = 'auto',\n Ask = 'ask',\n Readonly = 'readonly',\n}\n\n// Claude Code and the nanocode Claude engine.\nexport enum ClaudePermissionMode {\n Default = 'default',\n AcceptEdits = 'accept-edits',\n Plan = 'plan',\n Bypass = 'bypass',\n // The nanocode Claude engine only: a reviewer model answers what `default` would ask,\n // as Claude Code's auto mode does.\n Auto = 'auto',\n}\n\n// Codex and the nanocode Codex engine.\nexport enum CodexApprovalPolicy {\n Untrusted = 'untrusted',\n OnRequest = 'on-request',\n OnFailure = 'on-failure',\n Never = 'never',\n}\n\n// Who answers what the nanocode Codex engine's approval policy would ask, as the Codex\n// CLI's approvals_reviewer: the person, or a reviewer model.\nexport enum CodexApprovalsReviewer {\n User = 'user',\n AutoReview = 'auto-review',\n}\n\n// The Codex CLI's OS sandbox on a host you run.\nexport enum CodexSandboxMode {\n ReadOnly = 'read-only',\n WorkspaceWrite = 'workspace-write',\n DangerFullAccess = 'danger-full-access',\n}\n\nexport interface SecretRefIface {\n secretKey: string;\n}\n\nexport type InstructionInput = InstructionFragmentIface | DynamicSlotIface;\nexport type SkillInput = SkillBundleIface | DynamicSlotIface;\n\nexport const configObjectJson = (args: {\n title: string;\n properties: Record<string, JsonSchema>;\n required?: string[];\n}): JsonSchema => ({\n type: 'object',\n title: args.title,\n additionalProperties: false,\n properties: args.properties,\n required: args.required ?? [],\n});\n\n// Hosted harnesses leave choices and defaults to the platform; explicit lists stay restricted.\nexport const modelJson = (ids?: readonly string[], defaultId?: string): JsonSchema => ({\n $ref: SCHEMA_IDS.modelPicker,\n type: 'string',\n ...(ids == null\n ? { minLength: 1, maxLength: 200, pattern: MODEL_REFERENCE_PATTERN }\n : { enum: [...ids] }),\n ...(defaultId == null ? {} : { default: defaultId }),\n});\n\nexport const reasoningJson = (levels: readonly ReasoningLevel[]): JsonSchema => ({\n $ref: SCHEMA_IDS.reasoning,\n enum: [...levels],\n});\n\nexport const credentialsJson = (): JsonSchema => ({ $ref: SCHEMA_IDS.credentialPolicy });\n\nexport const permissionModeJson = (modes: readonly string[], defaultMode?: string): JsonSchema => {\n const schema: JsonSchema = { $ref: SCHEMA_IDS.permissionMode, enum: [...modes] };\n if (defaultMode != null) schema.default = defaultMode;\n return schema;\n};\n\nexport const instructionsJson = (): JsonSchema => ({ $ref: SCHEMA_IDS.instructions });\nexport const skillsJson = (): JsonSchema => ({ $ref: SCHEMA_IDS.skills });\nexport const secretRefJson = (): JsonSchema => ({ $ref: SCHEMA_IDS.secretRef });\n\nexport const urlJson = (title: string, schemes: readonly string[]): JsonSchema => ({\n type: 'string',\n title,\n format: 'uri',\n pattern: `^(${schemes.join('|')})://`,\n});\n\nexport const absolutePathJson = (title: string): JsonSchema => ({\n type: 'string',\n title,\n pattern: '^/',\n});\n\nexport const modelZod = (ids?: readonly string[]) => {\n if (ids != null)\n return z.string().refine((id) => ids.includes(id), {\n message: `model must be one of: ${ids.join(', ')}`,\n });\n const pattern = new RegExp(MODEL_REFERENCE_PATTERN);\n return z.string().min(1).max(200).regex(pattern, {\n message: 'model must be a printable ASCII reference without empty path segments',\n });\n};\n\nexport const reasoningZod = (levels: readonly ReasoningLevel[]) =>\n z.nativeEnum(ReasoningLevel).refine((level) => levels.includes(level), {\n message: `reasoning must be one of: ${levels.join(', ')}`,\n });\n\nexport const credentialsZod = () => credentialPolicySchema;\nexport const instructionsZod = () => z.array(instructionFragmentSchema).default([]);\nexport const skillsZod = () => z.array(skillBundleSchema).default([]);\nexport const secretRefZod = () => z.object({ secretKey: z.string().min(1) });\n\nexport const urlZod = (schemes: readonly string[]) =>\n z\n .string()\n .url()\n .refine((value) => schemes.some((scheme) => value.startsWith(`${scheme}://`)), {\n message: `url must use one of: ${schemes.join(', ')}`,\n });\n\nexport const absolutePathZod = () => z.string().startsWith('/');\n\n// Throws a readable error naming the harness; open() surfaces it as the\n// session's open failure.\nexport const parseHarnessConfig = <T extends z.ZodType>(args: {\n specifier: string;\n schema: T;\n config: JsonValue;\n}): z.output<T> => {\n const parsed = args.schema.safeParse(args.config);\n if (parsed.success) return parsed.data;\n const issues = parsed.error.issues\n .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)\n .join('; ');\n throw new Error(`invalid config for ${args.specifier}: ${issues}`);\n};\n\n// Authoring input and provider-private payloads are typed objects; a JSON\n// round trip drops undefined fields and the schema proves the result is JSON.\nexport const toJsonValue = <Value>(value: Value): JsonValue =>\n jsonValueSchema.parse(JSON.parse(JSON.stringify(value)));\n\nexport const toJsonObject = <Value>(value: Value): JsonObject =>\n jsonObjectSchema.parse(JSON.parse(JSON.stringify(value)));\n\nexport type CredentialsInput = CredentialPolicyIface;\n\n// What an authoring helper (`serverlessPi({...})`) returns: the manifest's\n// harness binding.\nexport interface HarnessBindingOutputIface {\n harness: PackageProviderRefIface;\n config: object;\n}\n\nexport const harnessBinding = <Config extends object>(\n specifier: string,\n config: Config,\n): HarnessBindingOutputIface => ({\n harness: packageRef(specifier),\n config: { ...config },\n});\n"],
5
- "mappings": "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",
6
- "names": ["MODEL_REFERENCE_PATTERN", "ReasoningLevel", "PiPermissionMode", "ClaudePermissionMode", "CodexApprovalPolicy", "CodexApprovalsReviewer", "CodexSandboxMode"]
4
+ "sourcesContent": ["import {\n inferenceSchema,\n jsonObjectSchema,\n jsonValueSchema,\n PermissionLevel,\n SCHEMA_IDS,\n type HarnessSettingsIface,\n type InferenceSource,\n type JsonObject,\n type JsonSchema,\n type JsonValue,\n type HarnessEnvironmentIface,\n} from '@finalai/agent-provider';\nimport * as z from 'zod';\nimport { MODEL_REFERENCE_PATTERN } from \"./model-reference.mjs\";\n\nexport { MODEL_REFERENCE_PATTERN } from \"./model-reference.mjs\";\n\n// Configuration building blocks shared by the harness definitions: each\n// writes its configuration's JSON Schema (what a picker renders and the\n// platform validates settings with, $ref-ing the shared final://schemas/*\n// fragments) from these. The Zod helpers are for programs that read a\n// configuration they were handed.\n\n// Mirrors the final://schemas/reasoning fragment's enum.\nexport enum ReasoningLevel {\n None = 'none',\n Minimal = 'minimal',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n Max = 'max',\n}\n\n// The native modes each program understands. Settings carry a `PermissionLevel`;\n// each harness maps it onto its program's own mode.\n\n// Pi and the Final harness.\nexport enum PiPermissionMode {\n Auto = 'auto',\n Ask = 'ask',\n Readonly = 'readonly',\n}\n\n// Claude Code and the nanocode Claude engine.\nexport enum ClaudePermissionMode {\n Default = 'default',\n AcceptEdits = 'accept-edits',\n Plan = 'plan',\n Bypass = 'bypass',\n // The nanocode Claude engine only: a reviewer model answers what `default` would ask.\n Auto = 'auto',\n}\n\n// Codex and the nanocode Codex engine.\nexport enum CodexApprovalPolicy {\n Untrusted = 'untrusted',\n OnRequest = 'on-request',\n OnFailure = 'on-failure',\n Never = 'never',\n}\n\n// Who answers what a nanocode engine would ask: the person, or a reviewer model.\nexport enum ApprovalsReviewer {\n User = 'user',\n AutoReview = 'auto-review',\n}\n\n// The Codex CLI's OS sandbox on a host you run.\nexport enum CodexSandboxMode {\n ReadOnly = 'read-only',\n WorkspaceWrite = 'workspace-write',\n DangerFullAccess = 'danger-full-access',\n}\n\nexport interface SecretRefIface {\n secretKey: string;\n}\n\n// A permission level as the caller wrote it, enum or string.\nexport type PermissionInput = PermissionLevel | `${PermissionLevel}`;\n\n// One inference source or an ordered list of them; the first available wins.\nexport type InferenceInput = InferenceSource | readonly InferenceSource[];\n\nexport const piPermissionModeFor = (level: PermissionLevel): PiPermissionMode =>\n level === PermissionLevel.Auto ? PiPermissionMode.Auto : PiPermissionMode.Ask;\n\nexport const claudePermissionModeFor = (\n level: PermissionLevel,\n reviewer: ApprovalsReviewer = ApprovalsReviewer.User,\n): ClaudePermissionMode => {\n if (level === PermissionLevel.Auto) return ClaudePermissionMode.Bypass;\n if (reviewer === ApprovalsReviewer.AutoReview) return ClaudePermissionMode.Auto;\n return level === PermissionLevel.Review\n ? ClaudePermissionMode.AcceptEdits\n : ClaudePermissionMode.Default;\n};\n\nexport const codexApprovalPolicyFor = (level: PermissionLevel): CodexApprovalPolicy =>\n level === PermissionLevel.Auto\n ? CodexApprovalPolicy.Never\n : level === PermissionLevel.Review\n ? CodexApprovalPolicy.OnRequest\n : CodexApprovalPolicy.Untrusted;\n\nexport const configObjectJson = (args: {\n title: string;\n properties: Record<string, JsonSchema>;\n required?: string[];\n}): JsonSchema => ({\n type: 'object',\n title: args.title,\n additionalProperties: false,\n properties: args.properties,\n required: args.required ?? [],\n});\n\n// Open model references; an explicit list restricts them.\nexport const modelJson = (ids?: readonly string[], defaultId?: string): JsonSchema => ({\n $ref: SCHEMA_IDS.modelPicker,\n type: 'string',\n ...(ids == null\n ? { minLength: 1, maxLength: 200, pattern: MODEL_REFERENCE_PATTERN }\n : { enum: [...ids] }),\n ...(defaultId == null ? {} : { default: defaultId }),\n});\n\nexport const reasoningJson = (levels: readonly ReasoningLevel[]): JsonSchema => ({\n $ref: SCHEMA_IDS.reasoning,\n enum: [...levels],\n});\n\nexport const inferenceJson = (): JsonSchema => ({ $ref: SCHEMA_IDS.inference });\n\nexport const permissionModeJson = (): JsonSchema => ({\n $ref: SCHEMA_IDS.permissionMode,\n enum: Object.values(PermissionLevel),\n});\n\nexport const approvalsReviewerJson = (): JsonSchema => ({\n type: 'string',\n title: 'Approvals reviewer',\n enum: Object.values(ApprovalsReviewer),\n default: ApprovalsReviewer.User,\n});\n\nexport const secretRefJson = (): JsonSchema => ({ $ref: SCHEMA_IDS.secretRef });\n\nexport const urlJson = (title: string, schemes: readonly string[]): JsonSchema => ({\n type: 'string',\n title,\n format: 'uri',\n pattern: `^(${schemes.join('|')})://`,\n});\n\nexport const absolutePathJson = (title: string): JsonSchema => ({\n type: 'string',\n title,\n pattern: '^/',\n});\n\nexport const modelZod = (ids?: readonly string[]) => {\n if (ids != null)\n return z.string().refine((id) => ids.includes(id), {\n message: `model must be one of: ${ids.join(', ')}`,\n });\n const pattern = new RegExp(MODEL_REFERENCE_PATTERN);\n return z.string().min(1).max(200).regex(pattern, {\n message: 'model must be a printable ASCII reference without empty path segments',\n });\n};\n\nexport const reasoningZod = (levels: readonly ReasoningLevel[]) =>\n z.nativeEnum(ReasoningLevel).refine((level) => levels.includes(level), {\n message: `reasoning must be one of: ${levels.join(', ')}`,\n });\n\nexport const inferenceZod = () => inferenceSchema;\nexport const permissionModeZod = () => z.nativeEnum(PermissionLevel);\nexport const approvalsReviewerZod = () => z.nativeEnum(ApprovalsReviewer);\nexport const secretRefZod = () => z.object({ secretKey: z.string().min(1) });\n\nexport const urlZod = (schemes: readonly string[]) =>\n z\n .string()\n .url()\n .refine((value) => schemes.some((scheme) => value.startsWith(`${scheme}://`)), {\n message: `url must use one of: ${schemes.join(', ')}`,\n });\n\nexport const absolutePathZod = () => z.string().startsWith('/');\n\n// Throws a readable error naming the harness; open() surfaces it as the\n// session's open failure.\nexport const parseHarnessConfig = <T extends z.ZodType>(args: {\n harness: string;\n schema: T;\n config: unknown;\n}): z.output<T> => {\n const parsed = args.schema.safeParse(args.config);\n if (parsed.success) return parsed.data;\n const issues = parsed.error.issues\n .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)\n .join('; ');\n throw new Error(`invalid configuration for ${args.harness}: ${issues}`);\n};\n\n// Typed objects to JSON: a round trip drops undefined fields and the schema\n// proves the result is JSON.\nexport const toJsonValue = <Value>(value: Value): JsonValue =>\n jsonValueSchema.parse(JSON.parse(JSON.stringify(value)));\n\nexport const toJsonObject = <Value>(value: Value): JsonObject =>\n jsonObjectSchema.parse(JSON.parse(JSON.stringify(value)));\n\nconst inferenceList = (inference: InferenceInput | undefined): InferenceSource[] | undefined => {\n if (inference == null) return undefined;\n const list = Array.isArray(inference) ? [...inference] : [inference];\n if (list.length === 0) throw new Error('inference lists at least one source');\n return list;\n};\n\n// What every settings builder returns: plain harness settings, the wire form\n// a caller passes as `provide.harness`. A single inference source becomes a\n// one-item list, as it is stored.\nexport const harnessSettings = (args: {\n harness: string;\n adapter?: string;\n configuration: { inference?: InferenceInput } & Record<string, unknown>;\n environment?: HarnessEnvironmentIface;\n}): HarnessSettingsIface => {\n const { inference, ...rest } = args.configuration;\n const list = inferenceList(inference);\n const environment = args.environment;\n return {\n harness: args.harness,\n ...(args.adapter == null ? {} : { adapter: args.adapter }),\n configuration: toJsonObject({ ...rest, ...(list == null ? {} : { inference: list }) }),\n ...(environment == null\n ? {}\n : { environment: typeof environment === 'string' ? environment : { ...environment } }),\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["MODEL_REFERENCE_PATTERN", "ReasoningLevel", "PiPermissionMode", "ClaudePermissionMode", "CodexApprovalPolicy", "ApprovalsReviewer", "CodexSandboxMode"]
7
7
  }
@@ -0,0 +1,3 @@
1
+ import type { HarnessDefinitionIface } from '@finalai/agent-provider';
2
+ import { FinalHarness } from "./names.mjs";
3
+ export declare const FINAL_HARNESS_DEFINITIONS: Record<FinalHarness, HarnessDefinitionIface>;
@@ -0,0 +1,21 @@
1
+ import { ACP_AGENT_HARNESS } from "./acp-agent.mjs";
2
+ import { CLAUDE_CODE_HARNESS } from "./claude-code.mjs";
3
+ import { CODEX_HARNESS } from "./codex.mjs";
4
+ import { FINAL_HARNESS } from "./final.mjs";
5
+ import { FinalHarness } from "./names.mjs";
6
+ import { NANOCODE_CLAUDE_HARNESS } from "./nanocode-claude.mjs";
7
+ import { NANOCODE_CODEX_HARNESS } from "./nanocode-codex.mjs";
8
+ import { PI_HARNESS } from "./pi.mjs";
9
+ const FINAL_HARNESS_DEFINITIONS = {
10
+ [FinalHarness.Final]: FINAL_HARNESS,
11
+ [FinalHarness.Pi]: PI_HARNESS,
12
+ [FinalHarness.NanocodeClaude]: NANOCODE_CLAUDE_HARNESS,
13
+ [FinalHarness.NanocodeCodex]: NANOCODE_CODEX_HARNESS,
14
+ [FinalHarness.ClaudeCode]: CLAUDE_CODE_HARNESS,
15
+ [FinalHarness.Codex]: CODEX_HARNESS,
16
+ [FinalHarness.AcpAgent]: ACP_AGENT_HARNESS
17
+ };
18
+ export {
19
+ FINAL_HARNESS_DEFINITIONS
20
+ };
21
+ //# sourceMappingURL=definitions.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/harnesses/definitions.ts"],
4
+ "sourcesContent": ["import type { HarnessDefinitionIface } from '@finalai/agent-provider';\nimport { ACP_AGENT_HARNESS } from \"./acp-agent.mjs\";\nimport { CLAUDE_CODE_HARNESS } from \"./claude-code.mjs\";\nimport { CODEX_HARNESS } from \"./codex.mjs\";\nimport { FINAL_HARNESS } from \"./final.mjs\";\nimport { FinalHarness } from \"./names.mjs\";\nimport { NANOCODE_CLAUDE_HARNESS } from \"./nanocode-claude.mjs\";\nimport { NANOCODE_CODEX_HARNESS } from \"./nanocode-codex.mjs\";\nimport { PI_HARNESS } from \"./pi.mjs\";\n\n// Every Final harness definition by the qualified name harness settings give it.\nexport const FINAL_HARNESS_DEFINITIONS: Record<FinalHarness, HarnessDefinitionIface> = {\n [FinalHarness.Final]: FINAL_HARNESS,\n [FinalHarness.Pi]: PI_HARNESS,\n [FinalHarness.NanocodeClaude]: NANOCODE_CLAUDE_HARNESS,\n [FinalHarness.NanocodeCodex]: NANOCODE_CODEX_HARNESS,\n [FinalHarness.ClaudeCode]: CLAUDE_CODE_HARNESS,\n [FinalHarness.Codex]: CODEX_HARNESS,\n [FinalHarness.AcpAgent]: ACP_AGENT_HARNESS,\n};\n"],
5
+ "mappings": "AACA,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAGpB,MAAM,4BAA0E;AAAA,EACrF,CAAC,aAAa,KAAK,GAAG;AAAA,EACtB,CAAC,aAAa,EAAE,GAAG;AAAA,EACnB,CAAC,aAAa,cAAc,GAAG;AAAA,EAC/B,CAAC,aAAa,aAAa,GAAG;AAAA,EAC9B,CAAC,aAAa,UAAU,GAAG;AAAA,EAC3B,CAAC,aAAa,KAAK,GAAG;AAAA,EACtB,CAAC,aAAa,QAAQ,GAAG;AAC3B;",
6
+ "names": []
7
+ }
@@ -38,7 +38,7 @@ export declare const NANOCODE_HARNESS_OF: {
38
38
  codex: string;
39
39
  claude: string;
40
40
  };
41
- export declare const REMOTE_HARNESS_OF: {
41
+ export declare const PROCESS_HARNESS_OF: {
42
42
  codex: string;
43
43
  claude: string;
44
44
  };