@the-open-engine/zeroshot 6.18.0 → 6.19.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.
- package/cli/index.js +2 -1
- package/lib/agent-cli-provider/omp-release.d.ts +15 -0
- package/lib/agent-cli-provider/omp-release.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp-release.js +50 -0
- package/lib/agent-cli-provider/omp-release.js.map +1 -0
- package/lib/agent-cli-provider/omp-rpc-protocol.d.ts +38 -0
- package/lib/agent-cli-provider/omp-rpc-protocol.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp-rpc-protocol.js +267 -0
- package/lib/agent-cli-provider/omp-rpc-protocol.js.map +1 -0
- package/lib/agent-cli-provider/provider-registry.d.ts +16 -1
- package/lib/agent-cli-provider/provider-registry.d.ts.map +1 -1
- package/lib/agent-cli-provider/provider-registry.js +25 -1
- package/lib/agent-cli-provider/provider-registry.js.map +1 -1
- package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -1
- package/lib/agent-cli-provider/single-agent-runtime.js +1 -1
- package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -1
- package/lib/provider-names.js +5 -0
- package/lib/settings.js +6 -3
- package/lib/setup-plan.js +5 -5
- package/lib/start-cluster.js +3 -3
- package/package.json +1 -1
- package/src/agent/agent-lifecycle.js +4 -4
- package/src/agent/agent-task-executor.js +7 -6
- package/src/agent/pr-verification.js +4 -1
- package/src/agent-cli-provider/omp-release.ts +63 -0
- package/src/agent-cli-provider/omp-rpc-protocol.ts +396 -0
- package/src/agent-cli-provider/provider-registry.ts +29 -1
- package/src/agent-cli-provider/single-agent-runtime.ts +2 -1
- package/src/agent-wrapper.js +3 -3
- package/src/claude-task-runner.js +5 -3
- package/src/config-validator.js +3 -2
- package/src/isolation-manager.js +6 -2
- package/src/orchestrator.js +3 -3
- package/src/preflight.js +2 -1
package/cli/index.js
CHANGED
|
@@ -51,6 +51,7 @@ const {
|
|
|
51
51
|
} = require('../lib/settings');
|
|
52
52
|
const {
|
|
53
53
|
VALID_PROVIDERS,
|
|
54
|
+
getDefaultProviderId,
|
|
54
55
|
getProviderMetadata,
|
|
55
56
|
normalizeProviderName,
|
|
56
57
|
resolveProviderCommand,
|
|
@@ -442,7 +443,7 @@ function applyModelOverrideToConfig(config, modelOverride, providerOverride, set
|
|
|
442
443
|
}
|
|
443
444
|
|
|
444
445
|
const providerName = normalizeProviderName(
|
|
445
|
-
providerOverride || config.defaultProvider || settings.defaultProvider ||
|
|
446
|
+
providerOverride || config.defaultProvider || settings.defaultProvider || getDefaultProviderId()
|
|
446
447
|
);
|
|
447
448
|
const provider = getProvider(providerName);
|
|
448
449
|
try {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const OMP_SUPPORTED_VERSION: "17.2.1";
|
|
2
|
+
export declare const OMP_PACKAGE_NAME: "@oh-my-pi/pi-coding-agent";
|
|
3
|
+
export declare const OMP_BINARY_NAME: "omp";
|
|
4
|
+
export declare const OMP_INSTALL_COMMAND: "npm install -g --ignore-scripts @oh-my-pi/pi-coding-agent@17.2.1";
|
|
5
|
+
export declare const OMP_RELEASE_DOWNLOAD_BASE_URL: "https://github.com/can1357/oh-my-pi/releases/download/v17.2.1";
|
|
6
|
+
export type OmpReleasePlatform = 'darwin-arm64' | 'darwin-x64' | 'linux-arm64' | 'linux-musl-arm64' | 'linux-musl-x64' | 'linux-x64';
|
|
7
|
+
export interface OmpReleaseAsset {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly platform: OmpReleasePlatform;
|
|
10
|
+
readonly sha256: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const OMP_RELEASE_ASSETS: readonly OmpReleaseAsset[];
|
|
13
|
+
export declare function findOmpReleaseAsset(platform: string): OmpReleaseAsset | undefined;
|
|
14
|
+
export declare function ompReleaseAssetDownloadUrl(asset: OmpReleaseAsset): string;
|
|
15
|
+
//# sourceMappingURL=omp-release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-release.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/omp-release.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,EAAG,QAAiB,CAAC;AACvD,eAAO,MAAM,gBAAgB,EAAG,2BAAoC,CAAC;AACrE,eAAO,MAAM,eAAe,EAAG,KAAc,CAAC;AAC9C,eAAO,MAAM,mBAAmB,oEACyD,CAAC;AAC1F,eAAO,MAAM,6BAA6B,iEACkD,CAAC;AAE7F,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,WAAW,CAAC;AAEhB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EA+BxD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEjF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAEzE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OMP_RELEASE_ASSETS = exports.OMP_RELEASE_DOWNLOAD_BASE_URL = exports.OMP_INSTALL_COMMAND = exports.OMP_BINARY_NAME = exports.OMP_PACKAGE_NAME = exports.OMP_SUPPORTED_VERSION = void 0;
|
|
4
|
+
exports.findOmpReleaseAsset = findOmpReleaseAsset;
|
|
5
|
+
exports.ompReleaseAssetDownloadUrl = ompReleaseAssetDownloadUrl;
|
|
6
|
+
exports.OMP_SUPPORTED_VERSION = '17.2.1';
|
|
7
|
+
exports.OMP_PACKAGE_NAME = '@oh-my-pi/pi-coding-agent';
|
|
8
|
+
exports.OMP_BINARY_NAME = 'omp';
|
|
9
|
+
exports.OMP_INSTALL_COMMAND = `npm install -g --ignore-scripts ${exports.OMP_PACKAGE_NAME}@${exports.OMP_SUPPORTED_VERSION}`;
|
|
10
|
+
exports.OMP_RELEASE_DOWNLOAD_BASE_URL = `https://github.com/can1357/oh-my-pi/releases/download/v${exports.OMP_SUPPORTED_VERSION}`;
|
|
11
|
+
// Verified via `gh api repos/can1357/oh-my-pi/releases/tags/v17.2.1`. Windows is excluded (Unix-only).
|
|
12
|
+
exports.OMP_RELEASE_ASSETS = [
|
|
13
|
+
{
|
|
14
|
+
name: 'omp-darwin-arm64',
|
|
15
|
+
platform: 'darwin-arm64',
|
|
16
|
+
sha256: 'b75eddb19ba9ec401fee5ecb35b3ceb5ddc48708e98b5a113136df5d65f2bed8',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'omp-darwin-x64',
|
|
20
|
+
platform: 'darwin-x64',
|
|
21
|
+
sha256: 'd23c197d93243122ef9a35a247bdd85075c4c1356dd1fa4a080faaa2dae4b905',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'omp-linux-arm64',
|
|
25
|
+
platform: 'linux-arm64',
|
|
26
|
+
sha256: 'd34883744bb54476f7268aad4b561ea9b1cd826f201d044b337c5a96713fa83d',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'omp-linux-musl-arm64',
|
|
30
|
+
platform: 'linux-musl-arm64',
|
|
31
|
+
sha256: '3babfe15664f32fcc03dc91d92a10341baf6e65b9868351de21c5aa3218e139d',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'omp-linux-musl-x64',
|
|
35
|
+
platform: 'linux-musl-x64',
|
|
36
|
+
sha256: '8f05f7eed2940b11c29d7aaf0e641b100c014db5bfbee00afa5dd4929ad5dd6a',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'omp-linux-x64',
|
|
40
|
+
platform: 'linux-x64',
|
|
41
|
+
sha256: 'ac0285a571aa79c58d59482561a3871befe7333dba3a3bdc2e90682653ee33b2',
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
function findOmpReleaseAsset(platform) {
|
|
45
|
+
return exports.OMP_RELEASE_ASSETS.find((asset) => asset.platform === platform);
|
|
46
|
+
}
|
|
47
|
+
function ompReleaseAssetDownloadUrl(asset) {
|
|
48
|
+
return `${exports.OMP_RELEASE_DOWNLOAD_BASE_URL}/${asset.name}`;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=omp-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-release.js","sourceRoot":"","sources":["../../src/agent-cli-provider/omp-release.ts"],"names":[],"mappings":";;;AAwDA,kDAEC;AAED,gEAEC;AA9DY,QAAA,qBAAqB,GAAG,QAAiB,CAAC;AAC1C,QAAA,gBAAgB,GAAG,2BAAoC,CAAC;AACxD,QAAA,eAAe,GAAG,KAAc,CAAC;AACjC,QAAA,mBAAmB,GAC9B,mCAAmC,wBAAgB,IAAI,6BAAqB,EAAW,CAAC;AAC7E,QAAA,6BAA6B,GACxC,0DAA0D,6BAAqB,EAAW,CAAC;AAgB7F,uGAAuG;AAC1F,QAAA,kBAAkB,GAA+B;IAC5D;QACE,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,kEAAkE;KAC3E;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,kEAAkE;KAC3E;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,kEAAkE;KAC3E;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,kBAAkB;QAC5B,MAAM,EAAE,kEAAkE;KAC3E;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,kEAAkE;KAC3E;IACD;QACE,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,kEAAkE;KAC3E;CACF,CAAC;AAEF,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,OAAO,0BAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACzE,CAAC;AAED,SAAgB,0BAA0B,CAAC,KAAsB;IAC/D,OAAO,GAAG,qCAA6B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const OMP_RPC_CONTRACT_RELEASE: "17.2.1";
|
|
2
|
+
export interface OmpRpcDecoderLimits {
|
|
3
|
+
readonly maxPhysicalFrameBytes: number;
|
|
4
|
+
readonly maxReassembledFrameBytes: number;
|
|
5
|
+
readonly maxConcurrentReassemblies: number;
|
|
6
|
+
readonly maxChunksPerFrame: number;
|
|
7
|
+
readonly maxInflightReassemblyBytes: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_OMP_RPC_DECODER_LIMITS: OmpRpcDecoderLimits;
|
|
10
|
+
export interface OmpRpcInboundFrame {
|
|
11
|
+
readonly type: string;
|
|
12
|
+
readonly [key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface OmpRpcCommand {
|
|
15
|
+
readonly id?: string;
|
|
16
|
+
readonly type: string;
|
|
17
|
+
readonly [key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
export declare class OmpRpcProtocolError extends Error {
|
|
20
|
+
readonly code: string;
|
|
21
|
+
constructor(code: string, message: string);
|
|
22
|
+
}
|
|
23
|
+
export declare function classifyOmpRpcFrameType(type: string): 'known-pre-negotiation' | 'v2-only' | 'unknown';
|
|
24
|
+
export declare function assertNoPreNegotiationRpcChunk(frameType: string, negotiatedV2: boolean): void;
|
|
25
|
+
export declare class OmpRpcFrameDecoder {
|
|
26
|
+
private readonly limits;
|
|
27
|
+
private buffer;
|
|
28
|
+
private finished;
|
|
29
|
+
private readonly pendingReassemblies;
|
|
30
|
+
private inflightReassemblyBytes;
|
|
31
|
+
constructor(limits: OmpRpcDecoderLimits);
|
|
32
|
+
push(chunk: Uint8Array): readonly OmpRpcInboundFrame[];
|
|
33
|
+
finish(): void;
|
|
34
|
+
private consumeLine;
|
|
35
|
+
private consumeChunk;
|
|
36
|
+
}
|
|
37
|
+
export declare function encodeOmpRpcCommand(command: OmpRpcCommand, maxFrameBytes: number): Buffer;
|
|
38
|
+
//# sourceMappingURL=omp-rpc-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-rpc-protocol.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/omp-rpc-protocol.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,UAAwB,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;CAC7C;AAKD,eAAO,MAAM,8BAA8B,EAAE,mBAM5C,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAsCD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GACX,uBAAuB,GAAG,SAAS,GAAG,SAAS,CAIjD;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,CAO7F;AA4GD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiC;IACrE,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,MAAM,EAAE,mBAAmB;IAQvC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,kBAAkB,EAAE;IAoCtD,MAAM,IAAI,IAAI;IAgBd,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,YAAY;CAmFrB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAUzF"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OmpRpcFrameDecoder = exports.OmpRpcProtocolError = exports.DEFAULT_OMP_RPC_DECODER_LIMITS = exports.OMP_RPC_CONTRACT_RELEASE = void 0;
|
|
4
|
+
exports.classifyOmpRpcFrameType = classifyOmpRpcFrameType;
|
|
5
|
+
exports.assertNoPreNegotiationRpcChunk = assertNoPreNegotiationRpcChunk;
|
|
6
|
+
exports.encodeOmpRpcCommand = encodeOmpRpcCommand;
|
|
7
|
+
const json_1 = require("./json");
|
|
8
|
+
const omp_release_1 = require("./omp-release");
|
|
9
|
+
// Purely for traceability/doc; no runtime coupling to omp-release's spawn/install concerns.
|
|
10
|
+
exports.OMP_RPC_CONTRACT_RELEASE = omp_release_1.OMP_SUPPORTED_VERSION;
|
|
11
|
+
// Verified against the pinned OMP release's rpc-frame.ts: MAX_RPC_FRAME_BYTES=1MiB, MAX_RPC_REASSEMBLED_BYTES=64MiB,
|
|
12
|
+
// RPC_CHUNK_PAYLOAD_BYTES=256KiB -> ceil(64MiB/256KiB)=256 chunks max. The real decoder tracks exactly one
|
|
13
|
+
// pending sequence at a time, so maxConcurrentReassemblies/maxInflightReassemblyBytes mirror that ceiling.
|
|
14
|
+
exports.DEFAULT_OMP_RPC_DECODER_LIMITS = {
|
|
15
|
+
maxPhysicalFrameBytes: 1024 * 1024,
|
|
16
|
+
maxReassembledFrameBytes: 64 * 1024 * 1024,
|
|
17
|
+
maxConcurrentReassemblies: 1,
|
|
18
|
+
maxChunksPerFrame: 256,
|
|
19
|
+
maxInflightReassemblyBytes: 64 * 1024 * 1024,
|
|
20
|
+
};
|
|
21
|
+
class OmpRpcProtocolError extends Error {
|
|
22
|
+
code;
|
|
23
|
+
constructor(code, message) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = 'OmpRpcProtocolError';
|
|
26
|
+
this.code = code;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.OmpRpcProtocolError = OmpRpcProtocolError;
|
|
30
|
+
const KNOWN_PRE_NEGOTIATION_FRAME_TYPES = new Set([
|
|
31
|
+
'ready',
|
|
32
|
+
'available_commands_update',
|
|
33
|
+
'response',
|
|
34
|
+
'extension_error',
|
|
35
|
+
'agent_start',
|
|
36
|
+
'agent_end',
|
|
37
|
+
'turn_start',
|
|
38
|
+
'turn_end',
|
|
39
|
+
'message_start',
|
|
40
|
+
'message_update',
|
|
41
|
+
'message_end',
|
|
42
|
+
'tool_execution_start',
|
|
43
|
+
'tool_execution_update',
|
|
44
|
+
'tool_execution_end',
|
|
45
|
+
'auto_compaction_start',
|
|
46
|
+
'auto_compaction_end',
|
|
47
|
+
'auto_retry_start',
|
|
48
|
+
'auto_retry_end',
|
|
49
|
+
'ttsr_triggered',
|
|
50
|
+
'todo_reminder',
|
|
51
|
+
'todo_auto_clear',
|
|
52
|
+
'extension_ui_request',
|
|
53
|
+
'host_tool_call',
|
|
54
|
+
'host_tool_cancel',
|
|
55
|
+
'host_uri_request',
|
|
56
|
+
'host_uri_cancel',
|
|
57
|
+
'prompt_result',
|
|
58
|
+
'command_output',
|
|
59
|
+
'session_info_update',
|
|
60
|
+
'config_update',
|
|
61
|
+
'subagent_lifecycle',
|
|
62
|
+
'subagent_progress',
|
|
63
|
+
'subagent_event',
|
|
64
|
+
]);
|
|
65
|
+
function classifyOmpRpcFrameType(type) {
|
|
66
|
+
if (type === 'rpc_chunk')
|
|
67
|
+
return 'v2-only';
|
|
68
|
+
if (KNOWN_PRE_NEGOTIATION_FRAME_TYPES.has(type))
|
|
69
|
+
return 'known-pre-negotiation';
|
|
70
|
+
return 'unknown';
|
|
71
|
+
}
|
|
72
|
+
function assertNoPreNegotiationRpcChunk(frameType, negotiatedV2) {
|
|
73
|
+
if (frameType === 'rpc_chunk' && !negotiatedV2) {
|
|
74
|
+
throw new OmpRpcProtocolError('pre-negotiation-rpc-chunk', 'rpc_chunk frame received before protocol v2 negotiation succeeded.');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const STRICT_BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
|
|
78
|
+
function decodeStrictBase64(data) {
|
|
79
|
+
if (typeof data !== 'string' || data.length === 0 || !STRICT_BASE64_PATTERN.test(data)) {
|
|
80
|
+
throw new OmpRpcProtocolError('invalid-chunk-data', "rpc_chunk 'data' must be a non-empty, canonically-padded base64 string.");
|
|
81
|
+
}
|
|
82
|
+
const bytes = Buffer.from(data, 'base64');
|
|
83
|
+
if (bytes.toString('base64') !== data) {
|
|
84
|
+
throw new OmpRpcProtocolError('invalid-chunk-data', "rpc_chunk 'data' failed a base64 round-trip check (non-canonical encoding).");
|
|
85
|
+
}
|
|
86
|
+
return bytes;
|
|
87
|
+
}
|
|
88
|
+
function decodeStrictUtf8(bytes) {
|
|
89
|
+
try {
|
|
90
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
throw new OmpRpcProtocolError('invalid-utf8-in-reassembled-frame', 'Reassembled rpc_chunk sequence is not valid UTF-8.');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function toPhysicalFrame(record) {
|
|
97
|
+
const type = (0, json_1.getString)(record, 'type');
|
|
98
|
+
if (type === null) {
|
|
99
|
+
throw new OmpRpcProtocolError('malformed-physical-frame', "Physical frame is missing a string 'type' field.");
|
|
100
|
+
}
|
|
101
|
+
return { ...record, type };
|
|
102
|
+
}
|
|
103
|
+
function toReassembledFrame(record, chunkId) {
|
|
104
|
+
const type = (0, json_1.getString)(record, 'type');
|
|
105
|
+
if (type === null) {
|
|
106
|
+
throw new OmpRpcProtocolError('malformed-json-in-reassembled-frame', `rpc_chunk sequence "${chunkId}" reassembled into an object missing a string 'type' field.`);
|
|
107
|
+
}
|
|
108
|
+
return { ...record, type };
|
|
109
|
+
}
|
|
110
|
+
function readChunkMetadata(parsed, limits) {
|
|
111
|
+
const chunkId = (0, json_1.getString)(parsed, 'chunkId');
|
|
112
|
+
if (chunkId === null || chunkId.length === 0 || chunkId.length > 128) {
|
|
113
|
+
throw new OmpRpcProtocolError('invalid-chunk-metadata', "rpc_chunk 'chunkId' must be a non-empty string of at most 128 characters.");
|
|
114
|
+
}
|
|
115
|
+
const index = (0, json_1.getNumber)(parsed, 'index');
|
|
116
|
+
const count = (0, json_1.getNumber)(parsed, 'count');
|
|
117
|
+
const byteLength = (0, json_1.getNumber)(parsed, 'byteLength');
|
|
118
|
+
if (index === null ||
|
|
119
|
+
!Number.isSafeInteger(index) ||
|
|
120
|
+
index < 0 ||
|
|
121
|
+
count === null ||
|
|
122
|
+
!Number.isSafeInteger(count) ||
|
|
123
|
+
count < 2 ||
|
|
124
|
+
count > limits.maxChunksPerFrame ||
|
|
125
|
+
index >= count ||
|
|
126
|
+
byteLength === null ||
|
|
127
|
+
!Number.isSafeInteger(byteLength) ||
|
|
128
|
+
byteLength <= 0 ||
|
|
129
|
+
byteLength > limits.maxReassembledFrameBytes) {
|
|
130
|
+
throw new OmpRpcProtocolError('invalid-chunk-metadata', "rpc_chunk has invalid 'index'/'count'/'byteLength' metadata.");
|
|
131
|
+
}
|
|
132
|
+
return { chunkId, index, count, byteLength };
|
|
133
|
+
}
|
|
134
|
+
class OmpRpcFrameDecoder {
|
|
135
|
+
limits;
|
|
136
|
+
buffer;
|
|
137
|
+
finished;
|
|
138
|
+
pendingReassemblies;
|
|
139
|
+
inflightReassemblyBytes;
|
|
140
|
+
constructor(limits) {
|
|
141
|
+
this.limits = limits;
|
|
142
|
+
this.buffer = Buffer.alloc(0);
|
|
143
|
+
this.finished = false;
|
|
144
|
+
this.pendingReassemblies = new Map();
|
|
145
|
+
this.inflightReassemblyBytes = 0;
|
|
146
|
+
}
|
|
147
|
+
push(chunk) {
|
|
148
|
+
if (this.finished) {
|
|
149
|
+
throw new OmpRpcProtocolError('decoder-finished', 'push() called after finish().');
|
|
150
|
+
}
|
|
151
|
+
this.buffer = Buffer.concat([this.buffer, Buffer.from(chunk)]);
|
|
152
|
+
const frames = [];
|
|
153
|
+
for (;;) {
|
|
154
|
+
const newlineIndex = this.buffer.indexOf(0x0a);
|
|
155
|
+
if (newlineIndex === -1) {
|
|
156
|
+
if (this.buffer.byteLength > this.limits.maxPhysicalFrameBytes) {
|
|
157
|
+
throw new OmpRpcProtocolError('physical-frame-too-large', `Buffered physical frame exceeds the ${this.limits.maxPhysicalFrameBytes}-byte limit without a terminating newline.`);
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
const lineBytes = this.buffer.subarray(0, newlineIndex);
|
|
162
|
+
this.buffer = this.buffer.subarray(newlineIndex + 1);
|
|
163
|
+
if (lineBytes.byteLength + 1 > this.limits.maxPhysicalFrameBytes) {
|
|
164
|
+
throw new OmpRpcProtocolError('physical-frame-too-large', `Physical frame of ${lineBytes.byteLength + 1} bytes exceeds the ${this.limits.maxPhysicalFrameBytes}-byte limit.`);
|
|
165
|
+
}
|
|
166
|
+
const frame = this.consumeLine(lineBytes);
|
|
167
|
+
if (frame !== null)
|
|
168
|
+
frames.push(frame);
|
|
169
|
+
}
|
|
170
|
+
return frames;
|
|
171
|
+
}
|
|
172
|
+
finish() {
|
|
173
|
+
this.finished = true;
|
|
174
|
+
if (this.buffer.byteLength > 0) {
|
|
175
|
+
throw new OmpRpcProtocolError('incomplete-physical-frame', 'Stream ended with an unterminated physical frame (no trailing newline).');
|
|
176
|
+
}
|
|
177
|
+
if (this.pendingReassemblies.size > 0) {
|
|
178
|
+
throw new OmpRpcProtocolError('incomplete-chunk-sequence', 'Stream ended with an incomplete rpc_chunk sequence still pending.');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
consumeLine(lineBytes) {
|
|
182
|
+
let value;
|
|
183
|
+
try {
|
|
184
|
+
value = JSON.parse(lineBytes.toString('utf8'));
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
throw new OmpRpcProtocolError('malformed-physical-frame', 'Physical frame is not valid JSON.');
|
|
188
|
+
}
|
|
189
|
+
if (!(0, json_1.isRecord)(value)) {
|
|
190
|
+
throw new OmpRpcProtocolError('malformed-physical-frame', 'Physical frame must be a JSON object.');
|
|
191
|
+
}
|
|
192
|
+
const type = (0, json_1.getString)(value, 'type');
|
|
193
|
+
if (type !== 'rpc_chunk') {
|
|
194
|
+
if (this.pendingReassemblies.size > 0) {
|
|
195
|
+
throw new OmpRpcProtocolError('interrupted-chunk-sequence', 'A non-chunk frame arrived while an rpc_chunk sequence was pending.');
|
|
196
|
+
}
|
|
197
|
+
return toPhysicalFrame(value);
|
|
198
|
+
}
|
|
199
|
+
return this.consumeChunk(value);
|
|
200
|
+
}
|
|
201
|
+
consumeChunk(parsed) {
|
|
202
|
+
const metadata = readChunkMetadata(parsed, this.limits);
|
|
203
|
+
const bytes = decodeStrictBase64(parsed.data);
|
|
204
|
+
let pending = this.pendingReassemblies.get(metadata.chunkId);
|
|
205
|
+
if (pending === undefined) {
|
|
206
|
+
if (metadata.index !== 0) {
|
|
207
|
+
throw new OmpRpcProtocolError('chunk-sequence-must-start-at-zero', `rpc_chunk sequence "${metadata.chunkId}" must begin at index 0.`);
|
|
208
|
+
}
|
|
209
|
+
if (this.pendingReassemblies.size >= this.limits.maxConcurrentReassemblies) {
|
|
210
|
+
throw new OmpRpcProtocolError('interleaved-chunk-sequence', `Starting rpc_chunk sequence "${metadata.chunkId}" would exceed the concurrent-reassembly limit of ${this.limits.maxConcurrentReassemblies}.`);
|
|
211
|
+
}
|
|
212
|
+
pending = {
|
|
213
|
+
chunkId: metadata.chunkId,
|
|
214
|
+
count: metadata.count,
|
|
215
|
+
byteLength: metadata.byteLength,
|
|
216
|
+
nextIndex: 0,
|
|
217
|
+
chunks: [],
|
|
218
|
+
receivedBytes: 0,
|
|
219
|
+
};
|
|
220
|
+
this.pendingReassemblies.set(metadata.chunkId, pending);
|
|
221
|
+
}
|
|
222
|
+
else if (pending.count !== metadata.count ||
|
|
223
|
+
pending.byteLength !== metadata.byteLength ||
|
|
224
|
+
pending.nextIndex !== metadata.index) {
|
|
225
|
+
throw new OmpRpcProtocolError('chunk-sequence-mismatch', `rpc_chunk sequence "${metadata.chunkId}" metadata or ordering does not match the tracked sequence.`);
|
|
226
|
+
}
|
|
227
|
+
pending.chunks.push(bytes);
|
|
228
|
+
pending.receivedBytes += bytes.byteLength;
|
|
229
|
+
this.inflightReassemblyBytes += bytes.byteLength;
|
|
230
|
+
if (this.inflightReassemblyBytes > this.limits.maxInflightReassemblyBytes) {
|
|
231
|
+
throw new OmpRpcProtocolError('inflight-reassembly-bytes-exceeded', `Total in-flight rpc_chunk reassembly bytes exceed the ${this.limits.maxInflightReassemblyBytes}-byte limit.`);
|
|
232
|
+
}
|
|
233
|
+
if (pending.receivedBytes > pending.byteLength) {
|
|
234
|
+
throw new OmpRpcProtocolError('chunk-sequence-exceeds-declared-length', `rpc_chunk sequence "${metadata.chunkId}" received more bytes than its declared byteLength.`);
|
|
235
|
+
}
|
|
236
|
+
pending.nextIndex += 1;
|
|
237
|
+
if (pending.nextIndex < pending.count)
|
|
238
|
+
return null;
|
|
239
|
+
this.pendingReassemblies.delete(metadata.chunkId);
|
|
240
|
+
this.inflightReassemblyBytes -= pending.receivedBytes;
|
|
241
|
+
if (pending.receivedBytes !== pending.byteLength) {
|
|
242
|
+
throw new OmpRpcProtocolError('chunk-sequence-length-mismatch', `rpc_chunk sequence "${metadata.chunkId}" completed with ${pending.receivedBytes} bytes but declared ${pending.byteLength}.`);
|
|
243
|
+
}
|
|
244
|
+
const decodedText = decodeStrictUtf8(Buffer.concat(pending.chunks));
|
|
245
|
+
let reassembled;
|
|
246
|
+
try {
|
|
247
|
+
reassembled = JSON.parse(decodedText);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
throw new OmpRpcProtocolError('malformed-json-in-reassembled-frame', `rpc_chunk sequence "${metadata.chunkId}" reassembled into invalid JSON.`);
|
|
251
|
+
}
|
|
252
|
+
if (!(0, json_1.isRecord)(reassembled)) {
|
|
253
|
+
throw new OmpRpcProtocolError('non-object-reassembled-frame', `rpc_chunk sequence "${metadata.chunkId}" reassembled into a non-object JSON value.`);
|
|
254
|
+
}
|
|
255
|
+
return toReassembledFrame(reassembled, metadata.chunkId);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
exports.OmpRpcFrameDecoder = OmpRpcFrameDecoder;
|
|
259
|
+
function encodeOmpRpcCommand(command, maxFrameBytes) {
|
|
260
|
+
const line = `${JSON.stringify(command)}\n`;
|
|
261
|
+
const byteLength = Buffer.byteLength(line, 'utf8');
|
|
262
|
+
if (byteLength > maxFrameBytes) {
|
|
263
|
+
throw new OmpRpcProtocolError('outbound-frame-too-large', `Outbound command of ${byteLength} bytes exceeds the ${maxFrameBytes}-byte limit.`);
|
|
264
|
+
}
|
|
265
|
+
return Buffer.from(line, 'utf8');
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=omp-rpc-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-rpc-protocol.js","sourceRoot":"","sources":["../../src/agent-cli-provider/omp-rpc-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,7 @@ export interface ProviderDockerMetadata {
|
|
|
46
46
|
}
|
|
47
47
|
interface ProviderRegistryEntryBase {
|
|
48
48
|
readonly id: string;
|
|
49
|
+
readonly default: boolean;
|
|
49
50
|
readonly aliases: readonly string[];
|
|
50
51
|
readonly displayName: string;
|
|
51
52
|
readonly binary: string;
|
|
@@ -82,6 +83,7 @@ export interface UnstructuredOutputProviderRegistryEntry extends ProviderRegistr
|
|
|
82
83
|
export type ProviderRegistryEntry = StructuredOutputProviderRegistryEntry | UnstructuredOutputProviderRegistryEntry;
|
|
83
84
|
export declare const providerRegistry: readonly [{
|
|
84
85
|
readonly id: "claude";
|
|
86
|
+
readonly default: true;
|
|
85
87
|
readonly aliases: readonly ["anthropic"];
|
|
86
88
|
readonly displayName: "Claude";
|
|
87
89
|
readonly binary: "claude";
|
|
@@ -125,6 +127,7 @@ export declare const providerRegistry: readonly [{
|
|
|
125
127
|
readonly adapter: StructuredOutputRecoveryAdapter;
|
|
126
128
|
}, {
|
|
127
129
|
readonly id: "codex";
|
|
130
|
+
readonly default: false;
|
|
128
131
|
readonly aliases: readonly ["openai"];
|
|
129
132
|
readonly displayName: "Codex";
|
|
130
133
|
readonly binary: "codex";
|
|
@@ -175,6 +178,7 @@ export declare const providerRegistry: readonly [{
|
|
|
175
178
|
readonly adapter: StructuredOutputRecoveryAdapter;
|
|
176
179
|
}, {
|
|
177
180
|
readonly id: "gateway";
|
|
181
|
+
readonly default: false;
|
|
178
182
|
readonly aliases: readonly [];
|
|
179
183
|
readonly displayName: "Gateway";
|
|
180
184
|
readonly binary: "node";
|
|
@@ -222,6 +226,7 @@ export declare const providerRegistry: readonly [{
|
|
|
222
226
|
readonly adapter: ProviderAdapter;
|
|
223
227
|
}, {
|
|
224
228
|
readonly id: "gemini";
|
|
229
|
+
readonly default: false;
|
|
225
230
|
readonly aliases: readonly ["google"];
|
|
226
231
|
readonly displayName: "Gemini";
|
|
227
232
|
readonly binary: "gemini";
|
|
@@ -268,6 +273,7 @@ export declare const providerRegistry: readonly [{
|
|
|
268
273
|
readonly adapter: StructuredOutputRecoveryAdapter;
|
|
269
274
|
}, {
|
|
270
275
|
readonly id: "opencode";
|
|
276
|
+
readonly default: false;
|
|
271
277
|
readonly aliases: readonly [];
|
|
272
278
|
readonly displayName: "Opencode";
|
|
273
279
|
readonly binary: "opencode";
|
|
@@ -317,6 +323,7 @@ export declare const providerRegistry: readonly [{
|
|
|
317
323
|
readonly adapter: StructuredOutputRecoveryAdapter;
|
|
318
324
|
}, {
|
|
319
325
|
readonly id: "pi";
|
|
326
|
+
readonly default: false;
|
|
320
327
|
readonly aliases: readonly [];
|
|
321
328
|
readonly displayName: "Pi";
|
|
322
329
|
readonly binary: "pi";
|
|
@@ -363,6 +370,7 @@ export declare const providerRegistry: readonly [{
|
|
|
363
370
|
readonly adapter: ProviderAdapter;
|
|
364
371
|
}, {
|
|
365
372
|
readonly id: "omp";
|
|
373
|
+
readonly default: false;
|
|
366
374
|
readonly aliases: readonly [];
|
|
367
375
|
readonly displayName: "OMP";
|
|
368
376
|
readonly binary: "omp";
|
|
@@ -372,7 +380,7 @@ export declare const providerRegistry: readonly [{
|
|
|
372
380
|
readonly args: readonly [];
|
|
373
381
|
};
|
|
374
382
|
readonly invoke: SpawnProviderInvokeSpec;
|
|
375
|
-
readonly installInstructions: "npm install -g --ignore-scripts @oh-my-pi/pi-coding-agent";
|
|
383
|
+
readonly installInstructions: "npm install -g --ignore-scripts @oh-my-pi/pi-coding-agent@17.2.1";
|
|
376
384
|
readonly authInstructions: "omp\n/login";
|
|
377
385
|
readonly credentialPaths: readonly ["~/.omp"];
|
|
378
386
|
readonly credentialEnvKeys: readonly string[];
|
|
@@ -409,6 +417,7 @@ export declare const providerRegistry: readonly [{
|
|
|
409
417
|
readonly adapter: ProviderAdapter;
|
|
410
418
|
}, {
|
|
411
419
|
readonly id: "kiro";
|
|
420
|
+
readonly default: false;
|
|
412
421
|
readonly aliases: readonly [];
|
|
413
422
|
readonly displayName: "Kiro";
|
|
414
423
|
readonly binary: "kiro-cli";
|
|
@@ -454,6 +463,7 @@ export declare const providerRegistry: readonly [{
|
|
|
454
463
|
readonly adapter: ProviderAdapter;
|
|
455
464
|
}, {
|
|
456
465
|
readonly id: "copilot";
|
|
466
|
+
readonly default: false;
|
|
457
467
|
readonly aliases: readonly [];
|
|
458
468
|
readonly displayName: "Copilot";
|
|
459
469
|
readonly binary: "copilot";
|
|
@@ -507,6 +517,11 @@ export declare const providerIds: readonly RegistryProviderId[];
|
|
|
507
517
|
export declare const providerAliases: readonly RegistryProviderAlias[];
|
|
508
518
|
export declare const knownProviderNames: readonly (RegistryProviderId | RegistryProviderAlias)[];
|
|
509
519
|
export declare const providerAliasMap: Readonly<Record<string, RegistryProviderId>>;
|
|
520
|
+
export declare function assertExactlyOneDefaultProvider<T extends {
|
|
521
|
+
id: string;
|
|
522
|
+
default: boolean;
|
|
523
|
+
}>(entries: readonly T[]): T['id'];
|
|
524
|
+
export declare function getDefaultProviderId(): RegistryProviderId;
|
|
510
525
|
export declare function normalizeProviderName(name: string): RegistryProviderId | string;
|
|
511
526
|
export declare function listProviderRegistryEntries(): readonly ProviderRegistryEntry[];
|
|
512
527
|
export declare function findProviderRegistryEntry(name: string | null | undefined): ProviderRegistryEntry | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/provider-registry.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2C,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/provider-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.providerAliasMap = exports.knownProviderNames = exports.providerAliases = exports.providerIds = exports.providerRegistry = void 0;
|
|
4
|
+
exports.assertExactlyOneDefaultProvider = assertExactlyOneDefaultProvider;
|
|
5
|
+
exports.getDefaultProviderId = getDefaultProviderId;
|
|
4
6
|
exports.normalizeProviderName = normalizeProviderName;
|
|
5
7
|
exports.listProviderRegistryEntries = listProviderRegistryEntries;
|
|
6
8
|
exports.findProviderRegistryEntry = findProviderRegistryEntry;
|
|
@@ -18,6 +20,7 @@ const opencode_1 = require("./adapters/opencode");
|
|
|
18
20
|
const omp_1 = require("./adapters/omp");
|
|
19
21
|
const pi_1 = require("./adapters/pi");
|
|
20
22
|
const claude_command_1 = require("./claude-command");
|
|
23
|
+
const omp_release_1 = require("./omp-release");
|
|
21
24
|
const STANDARD_CAPABILITIES = {
|
|
22
25
|
dockerIsolation: true,
|
|
23
26
|
worktreeIsolation: true,
|
|
@@ -68,6 +71,7 @@ const kiroAdapter = (0, acp_1.createAcpAdapter)({
|
|
|
68
71
|
exports.providerRegistry = [
|
|
69
72
|
{
|
|
70
73
|
id: 'claude',
|
|
74
|
+
default: true,
|
|
71
75
|
aliases: ['anthropic'],
|
|
72
76
|
displayName: 'Claude',
|
|
73
77
|
binary: 'claude',
|
|
@@ -105,6 +109,7 @@ exports.providerRegistry = [
|
|
|
105
109
|
},
|
|
106
110
|
{
|
|
107
111
|
id: 'codex',
|
|
112
|
+
default: false,
|
|
108
113
|
aliases: ['openai'],
|
|
109
114
|
displayName: 'Codex',
|
|
110
115
|
binary: 'codex',
|
|
@@ -146,6 +151,7 @@ exports.providerRegistry = [
|
|
|
146
151
|
},
|
|
147
152
|
{
|
|
148
153
|
id: 'gateway',
|
|
154
|
+
default: false,
|
|
149
155
|
aliases: [],
|
|
150
156
|
displayName: 'Gateway',
|
|
151
157
|
binary: 'node',
|
|
@@ -193,6 +199,7 @@ exports.providerRegistry = [
|
|
|
193
199
|
},
|
|
194
200
|
{
|
|
195
201
|
id: 'gemini',
|
|
202
|
+
default: false,
|
|
196
203
|
aliases: ['google'],
|
|
197
204
|
displayName: 'Gemini',
|
|
198
205
|
binary: 'gemini',
|
|
@@ -230,6 +237,7 @@ exports.providerRegistry = [
|
|
|
230
237
|
},
|
|
231
238
|
{
|
|
232
239
|
id: 'opencode',
|
|
240
|
+
default: false,
|
|
233
241
|
aliases: [],
|
|
234
242
|
displayName: 'Opencode',
|
|
235
243
|
binary: 'opencode',
|
|
@@ -270,6 +278,7 @@ exports.providerRegistry = [
|
|
|
270
278
|
},
|
|
271
279
|
{
|
|
272
280
|
id: 'pi',
|
|
281
|
+
default: false,
|
|
273
282
|
aliases: [],
|
|
274
283
|
displayName: 'Pi',
|
|
275
284
|
binary: 'pi',
|
|
@@ -308,12 +317,13 @@ exports.providerRegistry = [
|
|
|
308
317
|
},
|
|
309
318
|
{
|
|
310
319
|
id: 'omp',
|
|
320
|
+
default: false,
|
|
311
321
|
aliases: [],
|
|
312
322
|
displayName: 'OMP',
|
|
313
323
|
binary: 'omp',
|
|
314
324
|
command: { kind: 'fixed', command: 'omp', args: [] },
|
|
315
325
|
invoke: SPAWN_INVOKE,
|
|
316
|
-
installInstructions:
|
|
326
|
+
installInstructions: omp_release_1.OMP_INSTALL_COMMAND,
|
|
317
327
|
authInstructions: 'omp\n/login',
|
|
318
328
|
credentialPaths: ['~/.omp'],
|
|
319
329
|
credentialEnvKeys: omp_1.ompAdapter.credentialEnvKeys,
|
|
@@ -346,6 +356,7 @@ exports.providerRegistry = [
|
|
|
346
356
|
},
|
|
347
357
|
{
|
|
348
358
|
id: 'kiro',
|
|
359
|
+
default: false,
|
|
349
360
|
aliases: [],
|
|
350
361
|
displayName: 'Kiro',
|
|
351
362
|
binary: 'kiro-cli',
|
|
@@ -383,6 +394,7 @@ exports.providerRegistry = [
|
|
|
383
394
|
},
|
|
384
395
|
{
|
|
385
396
|
id: 'copilot',
|
|
397
|
+
default: false,
|
|
386
398
|
aliases: [],
|
|
387
399
|
displayName: 'Copilot',
|
|
388
400
|
binary: 'copilot',
|
|
@@ -440,6 +452,18 @@ exports.providerAliasMap = Object.freeze(exports.providerRegistry.reduce((result
|
|
|
440
452
|
}
|
|
441
453
|
return result;
|
|
442
454
|
}, {}));
|
|
455
|
+
function assertExactlyOneDefaultProvider(entries) {
|
|
456
|
+
const defaults = entries.filter((e) => e.default);
|
|
457
|
+
const [onlyDefault, ...rest] = defaults;
|
|
458
|
+
if (!onlyDefault || rest.length > 0) {
|
|
459
|
+
throw new Error(`Provider registry must declare exactly one default provider; found ${defaults.length}${defaults.length ? ' (' + defaults.map((e) => e.id).join(', ') + ')' : ''}`);
|
|
460
|
+
}
|
|
461
|
+
return onlyDefault.id;
|
|
462
|
+
}
|
|
463
|
+
const DEFAULT_PROVIDER_ID = assertExactlyOneDefaultProvider(exports.providerRegistry);
|
|
464
|
+
function getDefaultProviderId() {
|
|
465
|
+
return DEFAULT_PROVIDER_ID;
|
|
466
|
+
}
|
|
443
467
|
function normalizeProviderName(name) {
|
|
444
468
|
const normalized = name.toLowerCase();
|
|
445
469
|
return exports.providerAliasMap[normalized] ?? name;
|