@xemahq/worker-runtime-opencode 0.10.0 → 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.
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/compaction-policy.d.ts +11 -13
- package/dist/lib/compaction-policy.d.ts.map +1 -1
- package/dist/lib/compaction-policy.js +30 -26
- package/dist/lib/compaction-policy.js.map +1 -1
- package/dist/lib/opencode-worker-runtime.d.ts.map +1 -1
- package/dist/lib/opencode-worker-runtime.js +3 -2
- package/dist/lib/opencode-worker-runtime.js.map +1 -1
- package/dist/lib/runtime-profile-compiler.d.ts.map +1 -1
- package/dist/lib/runtime-profile-compiler.js +32 -19
- package/dist/lib/runtime-profile-compiler.js.map +1 -1
- package/dist/lib/runtime-profile-diagnostics.d.ts.map +1 -1
- package/dist/lib/runtime-profile-diagnostics.js +37 -12
- package/dist/lib/runtime-profile-diagnostics.js.map +1 -1
- package/dist/lib/runtime-profile.d.ts +5 -7
- package/dist/lib/runtime-profile.d.ts.map +1 -1
- package/dist/lib/runtime-profile.js +25 -27
- package/dist/lib/runtime-profile.js.map +1 -1
- package/dist/lib/v2-config-contract.d.ts +127 -0
- package/dist/lib/v2-config-contract.d.ts.map +1 -0
- package/dist/lib/v2-config-contract.js +112 -0
- package/dist/lib/v2-config-contract.js.map +1 -0
- package/dist/lib/v2-permissions.d.ts +50 -0
- package/dist/lib/v2-permissions.d.ts.map +1 -0
- package/dist/lib/v2-permissions.js +192 -0
- package/dist/lib/v2-permissions.js.map +1 -0
- package/package.json +6 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export { OpencodeWorkerRuntimeAdapter, OPENCODE_CONNECTOR_KIND, type OpencodePodSpec, } from './lib/opencode-worker-runtime';
|
|
2
2
|
export { createOpencodeWorkerRuntimeAdapter } from './lib/factory';
|
|
3
3
|
export { compileOpencodeRuntimeProfile } from './lib/runtime-profile-compiler';
|
|
4
|
-
export {
|
|
4
|
+
export { buildOpencodeV2Compaction, deriveOpencodeV2Compaction, type OpencodeV2CompactionConfig, } from './lib/compaction-policy';
|
|
5
5
|
export { OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS, resolveOpencodeRuntimeProfileSettings, type OpencodeAuthoredRuntimeProfileSettings, } from './lib/runtime-profile';
|
|
6
|
-
export { OPENCODE_AUTHORED_COMPACTION_KEYS, OPENCODE_AUTHORED_SETTINGS_KEYS, OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS, OPENCODE_NATIVE_PERMISSION_REFS,
|
|
6
|
+
export { OPENCODE_AUTHORED_COMPACTION_KEYS, OPENCODE_AUTHORED_SETTINGS_KEYS, OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS, OPENCODE_NATIVE_PERMISSION_REFS, OpencodeRuntimeProfileSchema, translateRuntimeProfileNativeRef, type OpencodeNativePermissionRef, type OpencodeRuntimeProfileSettings, } from './lib/runtime-profile';
|
|
7
|
+
export { evaluateOpencodeV2Permission, matchesV2Wildcard, OPENCODE_V1_PERMISSION_KEY_TRANSLATION, OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET, OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS, OPENCODE_V2_NATIVE_ACTIONS, OPENCODE_V2_PLATFORM_DENIED_ACTIONS, OpencodeV2Action, projectOpencodeV2Permissions, sanitizeMcpName, translateAuthoredPermissionKey, type AuthoredPermissionAction, type AuthoredPermissionMap, type AuthoredPermissionRule, type OpencodeV2PermissionEffect, type OpencodeV2PermissionRule, type ProjectOpencodeV2PermissionsInput, } from './lib/v2-permissions';
|
|
8
|
+
export { OPENCODE_V2_CONFIG_CONTRACT_SOURCE, OpencodeV2CompactionSchema, OpencodeV2ConfigContractSchema, OpencodeV2PermissionRulesetSchema, type OpencodeV2ConfigContract, } from './lib/v2-config-contract';
|
|
7
9
|
export { assertDropArmApplies, collectOpencodeRuntimeProfileDiagnostics, } from './lib/runtime-profile-diagnostics';
|
|
8
10
|
export { buildOpencodeSessionBundle, computeSessionBindingRevision, computeStaticBundleFingerprint, decodeOpencodeSessionBundle, type OpencodeBundleSubAgent, type OpencodeSessionBundlePayload, } from './lib/session-bundle';
|
|
9
11
|
export type { BundleCallerContext, OpencodeRuntimeConfig, WorkerRef, } from './lib/worker-ref';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,eAAe,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,kCAAkC,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,eAAe,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,kCAAkC,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yCAAyC,EACzC,qCAAqC,EACrC,KAAK,sCAAsC,GAC5C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iCAAiC,EACjC,+BAA+B,EAC/B,wCAAwC,EACxC,+BAA+B,EAC/B,4BAA4B,EAC5B,gCAAgC,EAChC,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,GACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EACjB,sCAAsC,EACtC,6CAA6C,EAC7C,qCAAqC,EACrC,0BAA0B,EAC1B,mCAAmC,EACnC,gBAAgB,EAChB,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,iCAAiC,GACvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,wCAAwC,GACzC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,GACV,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decodeOpencodeSessionBundle = exports.computeStaticBundleFingerprint = exports.computeSessionBindingRevision = exports.buildOpencodeSessionBundle = exports.collectOpencodeRuntimeProfileDiagnostics = exports.assertDropArmApplies = exports.
|
|
3
|
+
exports.decodeOpencodeSessionBundle = exports.computeStaticBundleFingerprint = exports.computeSessionBindingRevision = exports.buildOpencodeSessionBundle = exports.collectOpencodeRuntimeProfileDiagnostics = exports.assertDropArmApplies = exports.OpencodeV2PermissionRulesetSchema = exports.OpencodeV2ConfigContractSchema = exports.OpencodeV2CompactionSchema = exports.OPENCODE_V2_CONFIG_CONTRACT_SOURCE = exports.translateAuthoredPermissionKey = exports.sanitizeMcpName = exports.projectOpencodeV2Permissions = exports.OpencodeV2Action = exports.OPENCODE_V2_PLATFORM_DENIED_ACTIONS = exports.OPENCODE_V2_NATIVE_ACTIONS = exports.OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS = exports.OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET = exports.OPENCODE_V1_PERMISSION_KEY_TRANSLATION = exports.matchesV2Wildcard = exports.evaluateOpencodeV2Permission = exports.translateRuntimeProfileNativeRef = exports.OpencodeRuntimeProfileSchema = exports.OPENCODE_NATIVE_PERMISSION_REFS = exports.OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS = exports.OPENCODE_AUTHORED_SETTINGS_KEYS = exports.OPENCODE_AUTHORED_COMPACTION_KEYS = exports.resolveOpencodeRuntimeProfileSettings = exports.OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS = exports.deriveOpencodeV2Compaction = exports.buildOpencodeV2Compaction = exports.compileOpencodeRuntimeProfile = exports.createOpencodeWorkerRuntimeAdapter = exports.OPENCODE_CONNECTOR_KIND = exports.OpencodeWorkerRuntimeAdapter = void 0;
|
|
4
4
|
var opencode_worker_runtime_1 = require("./lib/opencode-worker-runtime");
|
|
5
5
|
Object.defineProperty(exports, "OpencodeWorkerRuntimeAdapter", { enumerable: true, get: function () { return opencode_worker_runtime_1.OpencodeWorkerRuntimeAdapter; } });
|
|
6
6
|
Object.defineProperty(exports, "OPENCODE_CONNECTOR_KIND", { enumerable: true, get: function () { return opencode_worker_runtime_1.OPENCODE_CONNECTOR_KIND; } });
|
|
@@ -9,9 +9,8 @@ Object.defineProperty(exports, "createOpencodeWorkerRuntimeAdapter", { enumerabl
|
|
|
9
9
|
var runtime_profile_compiler_1 = require("./lib/runtime-profile-compiler");
|
|
10
10
|
Object.defineProperty(exports, "compileOpencodeRuntimeProfile", { enumerable: true, get: function () { return runtime_profile_compiler_1.compileOpencodeRuntimeProfile; } });
|
|
11
11
|
var compaction_policy_1 = require("./lib/compaction-policy");
|
|
12
|
-
Object.defineProperty(exports, "
|
|
13
|
-
Object.defineProperty(exports, "
|
|
14
|
-
Object.defineProperty(exports, "deriveOpenCodeCompactionReserve", { enumerable: true, get: function () { return compaction_policy_1.deriveOpenCodeCompactionReserve; } });
|
|
12
|
+
Object.defineProperty(exports, "buildOpencodeV2Compaction", { enumerable: true, get: function () { return compaction_policy_1.buildOpencodeV2Compaction; } });
|
|
13
|
+
Object.defineProperty(exports, "deriveOpencodeV2Compaction", { enumerable: true, get: function () { return compaction_policy_1.deriveOpencodeV2Compaction; } });
|
|
15
14
|
var runtime_profile_1 = require("./lib/runtime-profile");
|
|
16
15
|
Object.defineProperty(exports, "OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS", { enumerable: true, get: function () { return runtime_profile_1.OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS; } });
|
|
17
16
|
Object.defineProperty(exports, "resolveOpencodeRuntimeProfileSettings", { enumerable: true, get: function () { return runtime_profile_1.resolveOpencodeRuntimeProfileSettings; } });
|
|
@@ -20,8 +19,25 @@ Object.defineProperty(exports, "OPENCODE_AUTHORED_COMPACTION_KEYS", { enumerable
|
|
|
20
19
|
Object.defineProperty(exports, "OPENCODE_AUTHORED_SETTINGS_KEYS", { enumerable: true, get: function () { return runtime_profile_2.OPENCODE_AUTHORED_SETTINGS_KEYS; } });
|
|
21
20
|
Object.defineProperty(exports, "OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS", { enumerable: true, get: function () { return runtime_profile_2.OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS; } });
|
|
22
21
|
Object.defineProperty(exports, "OPENCODE_NATIVE_PERMISSION_REFS", { enumerable: true, get: function () { return runtime_profile_2.OPENCODE_NATIVE_PERMISSION_REFS; } });
|
|
23
|
-
Object.defineProperty(exports, "OPENCODE_RETIRED_COMPACTION_KEYS", { enumerable: true, get: function () { return runtime_profile_2.OPENCODE_RETIRED_COMPACTION_KEYS; } });
|
|
24
22
|
Object.defineProperty(exports, "OpencodeRuntimeProfileSchema", { enumerable: true, get: function () { return runtime_profile_2.OpencodeRuntimeProfileSchema; } });
|
|
23
|
+
Object.defineProperty(exports, "translateRuntimeProfileNativeRef", { enumerable: true, get: function () { return runtime_profile_2.translateRuntimeProfileNativeRef; } });
|
|
24
|
+
var v2_permissions_1 = require("./lib/v2-permissions");
|
|
25
|
+
Object.defineProperty(exports, "evaluateOpencodeV2Permission", { enumerable: true, get: function () { return v2_permissions_1.evaluateOpencodeV2Permission; } });
|
|
26
|
+
Object.defineProperty(exports, "matchesV2Wildcard", { enumerable: true, get: function () { return v2_permissions_1.matchesV2Wildcard; } });
|
|
27
|
+
Object.defineProperty(exports, "OPENCODE_V1_PERMISSION_KEY_TRANSLATION", { enumerable: true, get: function () { return v2_permissions_1.OPENCODE_V1_PERMISSION_KEY_TRANSLATION; } });
|
|
28
|
+
Object.defineProperty(exports, "OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET", { enumerable: true, get: function () { return v2_permissions_1.OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET; } });
|
|
29
|
+
Object.defineProperty(exports, "OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS", { enumerable: true, get: function () { return v2_permissions_1.OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS; } });
|
|
30
|
+
Object.defineProperty(exports, "OPENCODE_V2_NATIVE_ACTIONS", { enumerable: true, get: function () { return v2_permissions_1.OPENCODE_V2_NATIVE_ACTIONS; } });
|
|
31
|
+
Object.defineProperty(exports, "OPENCODE_V2_PLATFORM_DENIED_ACTIONS", { enumerable: true, get: function () { return v2_permissions_1.OPENCODE_V2_PLATFORM_DENIED_ACTIONS; } });
|
|
32
|
+
Object.defineProperty(exports, "OpencodeV2Action", { enumerable: true, get: function () { return v2_permissions_1.OpencodeV2Action; } });
|
|
33
|
+
Object.defineProperty(exports, "projectOpencodeV2Permissions", { enumerable: true, get: function () { return v2_permissions_1.projectOpencodeV2Permissions; } });
|
|
34
|
+
Object.defineProperty(exports, "sanitizeMcpName", { enumerable: true, get: function () { return v2_permissions_1.sanitizeMcpName; } });
|
|
35
|
+
Object.defineProperty(exports, "translateAuthoredPermissionKey", { enumerable: true, get: function () { return v2_permissions_1.translateAuthoredPermissionKey; } });
|
|
36
|
+
var v2_config_contract_1 = require("./lib/v2-config-contract");
|
|
37
|
+
Object.defineProperty(exports, "OPENCODE_V2_CONFIG_CONTRACT_SOURCE", { enumerable: true, get: function () { return v2_config_contract_1.OPENCODE_V2_CONFIG_CONTRACT_SOURCE; } });
|
|
38
|
+
Object.defineProperty(exports, "OpencodeV2CompactionSchema", { enumerable: true, get: function () { return v2_config_contract_1.OpencodeV2CompactionSchema; } });
|
|
39
|
+
Object.defineProperty(exports, "OpencodeV2ConfigContractSchema", { enumerable: true, get: function () { return v2_config_contract_1.OpencodeV2ConfigContractSchema; } });
|
|
40
|
+
Object.defineProperty(exports, "OpencodeV2PermissionRulesetSchema", { enumerable: true, get: function () { return v2_config_contract_1.OpencodeV2PermissionRulesetSchema; } });
|
|
25
41
|
var runtime_profile_diagnostics_1 = require("./lib/runtime-profile-diagnostics");
|
|
26
42
|
Object.defineProperty(exports, "assertDropArmApplies", { enumerable: true, get: function () { return runtime_profile_diagnostics_1.assertDropArmApplies; } });
|
|
27
43
|
Object.defineProperty(exports, "collectOpencodeRuntimeProfileDiagnostics", { enumerable: true, get: function () { return runtime_profile_diagnostics_1.collectOpencodeRuntimeProfileDiagnostics; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AASA,yEAIuC;AAHrC,uIAAA,4BAA4B,OAAA;AAC5B,kIAAA,uBAAuB,OAAA;AAGzB,yCAAmE;AAA1D,6HAAA,kCAAkC,OAAA;AAC3C,2EAA+E;AAAtE,yIAAA,6BAA6B,OAAA;AACtC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AASA,yEAIuC;AAHrC,uIAAA,4BAA4B,OAAA;AAC5B,kIAAA,uBAAuB,OAAA;AAGzB,yCAAmE;AAA1D,6HAAA,kCAAkC,OAAA;AAC3C,2EAA+E;AAAtE,yIAAA,6BAA6B,OAAA;AACtC,6DAIiC;AAH/B,8HAAA,yBAAyB,OAAA;AACzB,+HAAA,0BAA0B,OAAA;AAG5B,yDAI+B;AAH7B,4IAAA,yCAAyC,OAAA;AACzC,wIAAA,qCAAqC,OAAA;AAGvC,yDAS+B;AAR7B,oIAAA,iCAAiC,OAAA;AACjC,kIAAA,+BAA+B,OAAA;AAC/B,2IAAA,wCAAwC,OAAA;AACxC,kIAAA,+BAA+B,OAAA;AAC/B,+HAAA,4BAA4B,OAAA;AAC5B,mIAAA,gCAAgC,OAAA;AAIlC,uDAkB8B;AAjB5B,8HAAA,4BAA4B,OAAA;AAC5B,mHAAA,iBAAiB,OAAA;AACjB,wIAAA,sCAAsC,OAAA;AACtC,+IAAA,6CAA6C,OAAA;AAC7C,uIAAA,qCAAqC,OAAA;AACrC,4HAAA,0BAA0B,OAAA;AAC1B,qIAAA,mCAAmC,OAAA;AACnC,kHAAA,gBAAgB,OAAA;AAChB,8HAAA,4BAA4B,OAAA;AAC5B,iHAAA,eAAe,OAAA;AACf,gIAAA,8BAA8B,OAAA;AAQhC,+DAMkC;AALhC,wIAAA,kCAAkC,OAAA;AAClC,gIAAA,0BAA0B,OAAA;AAC1B,oIAAA,8BAA8B,OAAA;AAC9B,uIAAA,iCAAiC,OAAA;AAGnC,iFAG2C;AAFzC,mIAAA,oBAAoB,OAAA;AACpB,uJAAA,wCAAwC,OAAA;AAE1C,uDAO8B;AAN5B,4HAAA,0BAA0B,OAAA;AAC1B,+HAAA,6BAA6B,OAAA;AAC7B,gIAAA,8BAA8B,OAAA;AAC9B,6HAAA,2BAA2B,OAAA"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface OpencodeV2CompactionConfig {
|
|
2
2
|
readonly auto: boolean;
|
|
3
|
-
readonly
|
|
4
|
-
|
|
3
|
+
readonly keep: {
|
|
4
|
+
readonly tokens: number;
|
|
5
|
+
};
|
|
6
|
+
readonly buffer?: number;
|
|
5
7
|
}
|
|
6
|
-
export declare function
|
|
7
|
-
contextWindow?: number | null | undefined;
|
|
8
|
-
}): number;
|
|
9
|
-
export declare function buildOpenCodeCompaction(opts: {
|
|
8
|
+
export declare function buildOpencodeV2Compaction(opts: {
|
|
10
9
|
readonly auto: boolean;
|
|
11
|
-
readonly
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}): OpenCodeCompactionConfig;
|
|
10
|
+
readonly contextWindow: number | null | undefined;
|
|
11
|
+
}): OpencodeV2CompactionConfig;
|
|
12
|
+
export declare function deriveOpencodeV2Compaction(opts: {
|
|
13
|
+
readonly contextWindow: number | null | undefined;
|
|
14
|
+
}): OpencodeV2CompactionConfig;
|
|
17
15
|
//# sourceMappingURL=compaction-policy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction-policy.d.ts","sourceRoot":"","sources":["../../src/lib/compaction-policy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compaction-policy.d.ts","sourceRoot":"","sources":["../../src/lib/compaction-policy.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA8DD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACnD,GAAG,0BAA0B,CAwB7B;AAOD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACnD,GAAG,0BAA0B,CAK7B"}
|
|
@@ -1,37 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.deriveOpenCodeCompaction = deriveOpenCodeCompaction;
|
|
3
|
+
exports.buildOpencodeV2Compaction = buildOpencodeV2Compaction;
|
|
4
|
+
exports.deriveOpencodeV2Compaction = deriveOpencodeV2Compaction;
|
|
6
5
|
const runtime_profile_1 = require("./runtime-profile");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
const BUFFER_FRACTION = 0.2;
|
|
7
|
+
const BUFFER_MIN_TOKENS = 16_000;
|
|
8
|
+
const BUFFER_MAX_TOKENS = 64_000;
|
|
9
|
+
const BUFFER_MAX_WINDOW_FRACTION = 0.5;
|
|
10
|
+
const KEEP_FRACTION = 0.1;
|
|
11
|
+
const KEEP_MIN_TOKENS = 4_000;
|
|
12
|
+
const KEEP_MAX_TOKENS = 20_000;
|
|
13
|
+
const KEEP_MAX_WINDOW_FRACTION = 0.25;
|
|
14
|
+
const KEEP_UNKNOWN_WINDOW_TOKENS = 15_000;
|
|
15
|
+
function knownWindow(window) {
|
|
16
|
+
return typeof window === 'number' && Number.isFinite(window) && window > 0
|
|
17
|
+
? window
|
|
18
|
+
: undefined;
|
|
19
|
+
}
|
|
20
|
+
function clampTokens(window, fraction, min, max, maxWindowFraction) {
|
|
21
|
+
return Math.min(Math.max(Math.round(window * fraction), min), max, Math.floor(window * maxWindowFraction));
|
|
20
22
|
}
|
|
21
|
-
function
|
|
23
|
+
function buildOpencodeV2Compaction(opts) {
|
|
24
|
+
const window = knownWindow(opts.contextWindow);
|
|
25
|
+
if (window === undefined) {
|
|
26
|
+
return { auto: opts.auto, keep: { tokens: KEEP_UNKNOWN_WINDOW_TOKENS } };
|
|
27
|
+
}
|
|
22
28
|
return {
|
|
23
29
|
auto: opts.auto,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
keep: {
|
|
31
|
+
tokens: clampTokens(window, KEEP_FRACTION, KEEP_MIN_TOKENS, KEEP_MAX_TOKENS, KEEP_MAX_WINDOW_FRACTION),
|
|
32
|
+
},
|
|
33
|
+
buffer: clampTokens(window, BUFFER_FRACTION, BUFFER_MIN_TOKENS, BUFFER_MAX_TOKENS, BUFFER_MAX_WINDOW_FRACTION),
|
|
28
34
|
};
|
|
29
35
|
}
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
auto: defaults.auto,
|
|
34
|
-
prune: defaults.prune,
|
|
36
|
+
function deriveOpencodeV2Compaction(opts) {
|
|
37
|
+
return buildOpencodeV2Compaction({
|
|
38
|
+
auto: runtime_profile_1.OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS.compaction.auto,
|
|
35
39
|
contextWindow: opts.contextWindow,
|
|
36
40
|
});
|
|
37
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction-policy.js","sourceRoot":"","sources":["../../src/lib/compaction-policy.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"compaction-policy.js","sourceRoot":"","sources":["../../src/lib/compaction-policy.ts"],"names":[],"mappings":";;AAmFA,8DA2BC;AAOD,gEAOC;AA5HD,uDAA8E;AAwC9E,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAQtC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAE1C,SAAS,WAAW,CAAC,MAAiC;IACpD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QACxE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAClB,MAAc,EACd,QAAgB,EAChB,GAAW,EACX,GAAW,EACX,iBAAyB;IAEzB,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,CAAC,EAC5C,GAAG,EACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CACvC,CAAC;AACJ,CAAC;AAOD,SAAgB,yBAAyB,CAAC,IAGzC;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE;YACJ,MAAM,EAAE,WAAW,CACjB,MAAM,EACN,aAAa,EACb,eAAe,EACf,eAAe,EACf,wBAAwB,CACzB;SACF;QACD,MAAM,EAAE,WAAW,CACjB,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,CAC3B;KACF,CAAC;AACJ,CAAC;AAOD,SAAgB,0BAA0B,CAAC,IAE1C;IACC,OAAO,yBAAyB,CAAC;QAC/B,IAAI,EAAE,2DAAyC,CAAC,UAAU,CAAC,IAAI;QAC/D,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-worker-runtime.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-worker-runtime.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EACjC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAOzE,OAAO,KAAK,EAAE,qBAAqB,EAAa,MAAM,cAAc,CAAC;AAcrE,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode-worker-runtime.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-worker-runtime.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EACjC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAOzE,OAAO,KAAK,EAAE,qBAAqB,EAAa,MAAM,cAAc,CAAC;AAcrE,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAwC1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAMzB,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;CACnE;AAOD,qBAAa,4BAA6B,YAAW,oBAAoB;IACvE,QAAQ,CAAC,IAAI,8BAA8B;IAC3C,QAAQ,CAAC,YAAY,8BAAyB;IAC9C,QAAQ,CAAC,qBAAqB,sBAA2B;IACzD,QAAQ,CAAC,uBAAuB,QAAQ;IAExC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAkC;gBAEpC,MAAM,EAAE,qBAAqB;IAKzC,oBAAoB,IAAI,oBAAoB;IAI5C,cAAc,CACZ,OAAO,EAAE,qBAAqB,EAC9B,mBAAmB,EAAE,gCAAgC,GACpD,wBAAwB;IAU3B,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IAwB1D,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IA0BnE,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAe7B,OAAO,CAAC,WAAW;CAcpB"}
|
|
@@ -15,8 +15,9 @@ const OPENCODE_CAPABILITIES = {
|
|
|
15
15
|
hooks: [
|
|
16
16
|
worker_runtime_1.HookKind.ToolExecuteBefore,
|
|
17
17
|
worker_runtime_1.HookKind.ToolExecuteAfter,
|
|
18
|
-
worker_runtime_1.HookKind.
|
|
19
|
-
worker_runtime_1.HookKind.
|
|
18
|
+
worker_runtime_1.HookKind.TurnCompleted,
|
|
19
|
+
worker_runtime_1.HookKind.ContextOverlay,
|
|
20
|
+
worker_runtime_1.HookKind.CompactionInvariants,
|
|
20
21
|
],
|
|
21
22
|
previewSupervisor: true,
|
|
22
23
|
gatewayAttributedCalls: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-worker-runtime.js","sourceRoot":"","sources":["../../src/lib/opencode-worker-runtime.ts"],"names":[],"mappings":";;;AAYA,qEAY0C;AAG1C,qDAI0B;AAE1B,yEAA2E;AAC3E,uDAAiE;AAYpD,QAAA,uBAAuB,GAAG,kBAAkB,CAAC;AAW1D,MAAM,+BAA+B,GAAG,OAAO,CAAC;AAEhD,MAAM,qBAAqB,GAAgC;IACzD,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"opencode-worker-runtime.js","sourceRoot":"","sources":["../../src/lib/opencode-worker-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-profile-compiler.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-profile-compiler.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-profile-compiler.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-profile-compiler.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AAyB1C,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,qBAAqB,EACnC,mBAAmB,EAAE,gCAAgC,GACpD,wBAAwB,CA2D1B"}
|
|
@@ -5,23 +5,19 @@ const content_address_1 = require("@xemahq/contracts/content-address");
|
|
|
5
5
|
const worker_runtime_1 = require("@xemahq/contracts/worker-runtime");
|
|
6
6
|
const compaction_policy_1 = require("./compaction-policy");
|
|
7
7
|
const runtime_profile_1 = require("./runtime-profile");
|
|
8
|
+
const v2_permissions_1 = require("./v2-permissions");
|
|
8
9
|
function compileOpencodeRuntimeProfile(inputProfile, resolvedComposition) {
|
|
9
10
|
const profile = runtime_profile_1.OpencodeRuntimeProfileSchema.parse(inputProfile);
|
|
10
11
|
assertCompositionProfile(profile, resolvedComposition);
|
|
11
12
|
const settings = (0, runtime_profile_1.resolveOpencodeRuntimeProfileSettings)(profile.settings);
|
|
12
13
|
const contextWindow = parsePrimaryContextWindow(resolvedComposition);
|
|
13
14
|
const restriction = parseNativeToolRestriction(resolvedComposition);
|
|
14
|
-
const authoredDecisions =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
21
|
-
for (const nativeToolRef of runtime_profile_1.OPENCODE_NATIVE_PERMISSION_REFS) {
|
|
22
|
-
const authored = authoredDecisions.get(nativeToolRef) ?? worker_runtime_1.NativePermissionDecision.Deny;
|
|
23
|
-
permission[nativeToolRef] =
|
|
24
|
-
restriction === undefined || restriction.has(nativeToolRef)
|
|
15
|
+
const authoredDecisions = collapseAuthoredDecisions(profile.nativePermissionPolicy.entries);
|
|
16
|
+
const permission = {};
|
|
17
|
+
for (const action of runtime_profile_1.OPENCODE_NATIVE_PERMISSION_REFS) {
|
|
18
|
+
const authored = authoredDecisions.get(action) ?? worker_runtime_1.NativePermissionDecision.Deny;
|
|
19
|
+
permission[action] =
|
|
20
|
+
restriction === undefined || restriction.has(action)
|
|
25
21
|
? authored
|
|
26
22
|
: worker_runtime_1.NativePermissionDecision.Deny;
|
|
27
23
|
}
|
|
@@ -29,14 +25,12 @@ function compileOpencodeRuntimeProfile(inputProfile, resolvedComposition) {
|
|
|
29
25
|
schemaVersion: 1,
|
|
30
26
|
runtimeKind: worker_runtime_1.WorkerRuntimeKind.Opencode,
|
|
31
27
|
config: {
|
|
32
|
-
|
|
33
|
-
autoupdate: false,
|
|
28
|
+
update: 'disable',
|
|
34
29
|
share: 'disabled',
|
|
35
|
-
|
|
36
|
-
permission,
|
|
37
|
-
compaction: (0, compaction_policy_1.
|
|
30
|
+
snapshots: settings.snapshots,
|
|
31
|
+
permissions: (0, v2_permissions_1.projectOpencodeV2Permissions)({ scope: 'global', permission }).map((rule) => ({ ...rule })),
|
|
32
|
+
compaction: (0, compaction_policy_1.buildOpencodeV2Compaction)({
|
|
38
33
|
auto: settings.compaction.auto,
|
|
39
|
-
prune: settings.compaction.prune,
|
|
40
34
|
contextWindow,
|
|
41
35
|
}),
|
|
42
36
|
},
|
|
@@ -99,7 +93,8 @@ function parseNativeToolRestriction(resolvedComposition) {
|
|
|
99
93
|
let previous;
|
|
100
94
|
const refs = new Set();
|
|
101
95
|
for (const ref of restriction.nativeToolRefs) {
|
|
102
|
-
|
|
96
|
+
const action = typeof ref === 'string' ? (0, runtime_profile_1.translateRuntimeProfileNativeRef)(ref) : undefined;
|
|
97
|
+
if (typeof ref !== 'string' || action === undefined) {
|
|
103
98
|
throw new TypeError(`Unsupported OpenCode native permission restriction ref "${String(ref)}". ` +
|
|
104
99
|
'Xema capabilities and MCP tools are not OpenCode native permissions.');
|
|
105
100
|
}
|
|
@@ -107,10 +102,28 @@ function parseNativeToolRestriction(resolvedComposition) {
|
|
|
107
102
|
throw new TypeError('effectiveOverlay.nativeToolRestriction.nativeToolRefs must be unique and sorted.');
|
|
108
103
|
}
|
|
109
104
|
previous = ref;
|
|
110
|
-
refs.add(
|
|
105
|
+
refs.add(action);
|
|
111
106
|
}
|
|
112
107
|
return refs;
|
|
113
108
|
}
|
|
109
|
+
function collapseAuthoredDecisions(entries) {
|
|
110
|
+
const rank = {
|
|
111
|
+
[worker_runtime_1.NativePermissionDecision.Allow]: 0,
|
|
112
|
+
[worker_runtime_1.NativePermissionDecision.Ask]: 1,
|
|
113
|
+
[worker_runtime_1.NativePermissionDecision.Deny]: 2,
|
|
114
|
+
};
|
|
115
|
+
const decisions = new Map();
|
|
116
|
+
for (const entry of entries) {
|
|
117
|
+
const action = (0, runtime_profile_1.translateRuntimeProfileNativeRef)(entry.nativeToolRef);
|
|
118
|
+
if (action === undefined)
|
|
119
|
+
continue;
|
|
120
|
+
const previous = decisions.get(action);
|
|
121
|
+
if (previous === undefined || rank[entry.decision] > rank[previous]) {
|
|
122
|
+
decisions.set(action, entry.decision);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return decisions;
|
|
126
|
+
}
|
|
114
127
|
function isRecord(value) {
|
|
115
128
|
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
116
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-profile-compiler.js","sourceRoot":"","sources":["../../src/lib/runtime-profile-compiler.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"runtime-profile-compiler.js","sourceRoot":"","sources":["../../src/lib/runtime-profile-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-profile-diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-profile-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-profile-diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-profile-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AA2F1C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,6BAA6B,GACpC,IAAI,CASN;AAsBD,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,qBAAqB,GAC7B,SAAS,wBAAwB,EAAE,CAwFrC"}
|
|
@@ -4,6 +4,9 @@ exports.assertDropArmApplies = assertDropArmApplies;
|
|
|
4
4
|
exports.collectOpencodeRuntimeProfileDiagnostics = collectOpencodeRuntimeProfileDiagnostics;
|
|
5
5
|
const worker_runtime_1 = require("@xemahq/contracts/worker-runtime");
|
|
6
6
|
const runtime_profile_1 = require("./runtime-profile");
|
|
7
|
+
const v2_permissions_1 = require("./v2-permissions");
|
|
8
|
+
const NO_V2_TARGET = new Set(v2_permissions_1.OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET);
|
|
9
|
+
const RUNTIME_TOOL_REFS = new Set(v2_permissions_1.OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS);
|
|
7
10
|
const POLICY_KIND_DROP_IS_NARROWING = Object.freeze({
|
|
8
11
|
'deny-all-except': true,
|
|
9
12
|
});
|
|
@@ -22,7 +25,33 @@ function collectOpencodeRuntimeProfileDiagnostics(profile) {
|
|
|
22
25
|
assertDropArmApplies(profile.nativePermissionPolicy);
|
|
23
26
|
const diagnostics = [];
|
|
24
27
|
profile.nativePermissionPolicy.entries.forEach((entry, index) => {
|
|
25
|
-
if ((0, runtime_profile_1.
|
|
28
|
+
if ((0, runtime_profile_1.translateRuntimeProfileNativeRef)(entry.nativeToolRef) !== undefined) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (RUNTIME_TOOL_REFS.has(entry.nativeToolRef)) {
|
|
32
|
+
diagnostics.push(diagnostic({
|
|
33
|
+
code: worker_runtime_1.RuntimeProfileDiagnosticCode.UnknownNativeToolRef,
|
|
34
|
+
cause: worker_runtime_1.RuntimeProfileDiagnosticCause.RetiredByPlatform,
|
|
35
|
+
subject: entry.nativeToolRef,
|
|
36
|
+
path: ['nativePermissionPolicy', 'entries', index, 'nativeToolRef'],
|
|
37
|
+
authoredValueDropped: true,
|
|
38
|
+
message: `"${entry.nativeToolRef}" is a runtime-local tool (xema-runtime-tools), not an OpenCode ` +
|
|
39
|
+
'native permission, so a RuntimeProfile cannot govern it and the authored decision ' +
|
|
40
|
+
`"${entry.decision}" was dropped. Govern it in the agent permission map. Remove the entry.`,
|
|
41
|
+
}));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (NO_V2_TARGET.has(entry.nativeToolRef)) {
|
|
45
|
+
diagnostics.push(diagnostic({
|
|
46
|
+
code: worker_runtime_1.RuntimeProfileDiagnosticCode.UnknownNativeToolRef,
|
|
47
|
+
cause: worker_runtime_1.RuntimeProfileDiagnosticCause.UnknownToRuntime,
|
|
48
|
+
subject: entry.nativeToolRef,
|
|
49
|
+
path: ['nativePermissionPolicy', 'entries', index, 'nativeToolRef'],
|
|
50
|
+
authoredValueDropped: true,
|
|
51
|
+
message: `OpenCode V2 has no permission action for "${entry.nativeToolRef}" (it was a ` +
|
|
52
|
+
`V1-only subject), so the authored decision "${entry.decision}" was dropped. ` +
|
|
53
|
+
'Nothing is granted by the drop: the ruleset starts with a deny-all. Remove the entry.',
|
|
54
|
+
}));
|
|
26
55
|
return;
|
|
27
56
|
}
|
|
28
57
|
const excluded = Object.hasOwn(runtime_profile_1.OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS, entry.nativeToolRef)
|
|
@@ -47,36 +76,32 @@ function collectOpencodeRuntimeProfileDiagnostics(profile) {
|
|
|
47
76
|
}));
|
|
48
77
|
});
|
|
49
78
|
const settings = profile.settings;
|
|
50
|
-
collectUnknownSettingKeys(settings, runtime_profile_1.OPENCODE_AUTHORED_SETTINGS_KEYS, ['settings'],
|
|
79
|
+
collectUnknownSettingKeys(settings, runtime_profile_1.OPENCODE_AUTHORED_SETTINGS_KEYS, ['settings'], diagnostics);
|
|
51
80
|
collectDefaulted(settings, 'snapshot', ['settings'], diagnostics);
|
|
52
81
|
const compaction = isRecord(settings.compaction) ? settings.compaction : undefined;
|
|
53
82
|
if (compaction !== undefined) {
|
|
54
|
-
collectUnknownSettingKeys(compaction, runtime_profile_1.OPENCODE_AUTHORED_COMPACTION_KEYS, ['settings', 'compaction'],
|
|
83
|
+
collectUnknownSettingKeys(compaction, runtime_profile_1.OPENCODE_AUTHORED_COMPACTION_KEYS, ['settings', 'compaction'], diagnostics);
|
|
55
84
|
}
|
|
56
85
|
for (const key of runtime_profile_1.OPENCODE_AUTHORED_COMPACTION_KEYS) {
|
|
57
86
|
collectDefaulted(compaction ?? {}, key, ['settings', 'compaction'], diagnostics);
|
|
58
87
|
}
|
|
59
88
|
return Object.freeze(diagnostics);
|
|
60
89
|
}
|
|
61
|
-
function collectUnknownSettingKeys(value, known, path,
|
|
90
|
+
function collectUnknownSettingKeys(value, known, path, sink) {
|
|
62
91
|
const vocabulary = new Set(known);
|
|
63
92
|
for (const key of Object.keys(value)) {
|
|
64
93
|
if (vocabulary.has(key)) {
|
|
65
94
|
continue;
|
|
66
95
|
}
|
|
67
|
-
const retirement = Object.hasOwn(retired, key) ? retired[key] : undefined;
|
|
68
96
|
sink.push(diagnostic({
|
|
69
97
|
code: worker_runtime_1.RuntimeProfileDiagnosticCode.UnknownSettingKey,
|
|
70
|
-
cause:
|
|
71
|
-
? worker_runtime_1.RuntimeProfileDiagnosticCause.UnknownToRuntime
|
|
72
|
-
: worker_runtime_1.RuntimeProfileDiagnosticCause.RetiredByPlatform,
|
|
98
|
+
cause: worker_runtime_1.RuntimeProfileDiagnosticCause.UnknownToRuntime,
|
|
73
99
|
subject: key,
|
|
74
100
|
path: [...path, key],
|
|
75
101
|
authoredValueDropped: true,
|
|
76
|
-
message:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
'profile if the setting was renamed.',
|
|
102
|
+
message: `OpenCode does not expose setting "${key}" to a RuntimeProfile, so the authored ` +
|
|
103
|
+
"value was dropped and the platform's own answer applies. Re-author this profile " +
|
|
104
|
+
'if the setting was renamed.',
|
|
80
105
|
}));
|
|
81
106
|
}
|
|
82
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-profile-diagnostics.js","sourceRoot":"","sources":["../../src/lib/runtime-profile-diagnostics.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"runtime-profile-diagnostics.js","sourceRoot":"","sources":["../../src/lib/runtime-profile-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
import { type RuntimeProfileSchema } from '@xemahq/contracts/worker-runtime';
|
|
2
|
-
|
|
2
|
+
import { OpencodeV2Action } from './v2-permissions';
|
|
3
|
+
export declare const OPENCODE_NATIVE_PERMISSION_REFS: readonly [OpencodeV2Action.Browser, OpencodeV2Action.Edit, OpencodeV2Action.Execute, OpencodeV2Action.Glob, OpencodeV2Action.Grep, OpencodeV2Action.Question, OpencodeV2Action.Read, OpencodeV2Action.Shell, OpencodeV2Action.Skill, OpencodeV2Action.Subagent, OpencodeV2Action.Webfetch, OpencodeV2Action.Websearch];
|
|
3
4
|
export type OpencodeNativePermissionRef = (typeof OPENCODE_NATIVE_PERMISSION_REFS)[number];
|
|
4
5
|
export interface OpencodeRuntimeProfileSettings {
|
|
5
|
-
readonly
|
|
6
|
+
readonly snapshots: boolean;
|
|
6
7
|
readonly compaction: {
|
|
7
8
|
readonly auto: boolean;
|
|
8
|
-
readonly prune: boolean;
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
11
|
export interface OpencodeAuthoredRuntimeProfileSettings {
|
|
12
12
|
readonly snapshot?: boolean;
|
|
13
13
|
readonly compaction?: {
|
|
14
14
|
readonly auto?: boolean;
|
|
15
|
-
readonly prune?: boolean;
|
|
16
15
|
};
|
|
17
16
|
}
|
|
18
17
|
export declare const OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS: OpencodeRuntimeProfileSettings;
|
|
19
18
|
export declare function resolveOpencodeRuntimeProfileSettings(authored: OpencodeAuthoredRuntimeProfileSettings): OpencodeRuntimeProfileSettings;
|
|
20
19
|
export declare const OPENCODE_AUTHORED_SETTINGS_KEYS: readonly ["compaction", "snapshot"];
|
|
21
|
-
export declare const OPENCODE_AUTHORED_COMPACTION_KEYS: readonly ["auto"
|
|
20
|
+
export declare const OPENCODE_AUTHORED_COMPACTION_KEYS: readonly ["auto"];
|
|
22
21
|
export declare const OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS: Readonly<Record<string, string>>;
|
|
23
|
-
export declare function
|
|
22
|
+
export declare function translateRuntimeProfileNativeRef(value: string): OpencodeNativePermissionRef | undefined;
|
|
24
23
|
export declare const OpencodeRuntimeProfileSchema: RuntimeProfileSchema;
|
|
25
|
-
export declare const OPENCODE_RETIRED_COMPACTION_KEYS: Readonly<Record<string, string>>;
|
|
26
24
|
//# sourceMappingURL=runtime-profile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-profile.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-profile.d.ts","sourceRoot":"","sources":["../../src/lib/runtime-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAkC,MAAM,kBAAkB,CAAC;AAepF,eAAO,MAAM,+BAA+B,wTAalC,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AASnD,MAAM,WAAW,8BAA8B;IAE7C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;KACxB,CAAC;CACH;AA8CD,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAeD,eAAO,MAAM,yCAAyC,EAAE,8BAIpD,CAAC;AAUL,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,sCAAsC,GAC/C,8BAA8B,CAQhC;AAWD,eAAO,MAAM,+BAA+B,qCAAsC,CAAC;AACnF,eAAO,MAAM,iCAAiC,mBAAoB,CAAC;AAWnE,eAAO,MAAM,wCAAwC,EAAE,QAAQ,CAC7D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtB,CAAC;AAYH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,MAAM,GACZ,2BAA2B,GAAG,SAAS,CAKzC;AA0DD,eAAO,MAAM,4BAA4B,EAAE,oBAiBvC,CAAC"}
|
|
@@ -1,48 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.OpencodeRuntimeProfileSchema = exports.OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS = exports.OPENCODE_AUTHORED_COMPACTION_KEYS = exports.OPENCODE_AUTHORED_SETTINGS_KEYS = exports.OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS = exports.OPENCODE_NATIVE_PERMISSION_REFS = void 0;
|
|
4
4
|
exports.resolveOpencodeRuntimeProfileSettings = resolveOpencodeRuntimeProfileSettings;
|
|
5
|
-
exports.
|
|
5
|
+
exports.translateRuntimeProfileNativeRef = translateRuntimeProfileNativeRef;
|
|
6
6
|
const worker_runtime_1 = require("@xemahq/contracts/worker-runtime");
|
|
7
|
+
const v2_permissions_1 = require("./v2-permissions");
|
|
7
8
|
exports.OPENCODE_NATIVE_PERMISSION_REFS = [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
'websearch',
|
|
9
|
+
v2_permissions_1.OpencodeV2Action.Browser,
|
|
10
|
+
v2_permissions_1.OpencodeV2Action.Edit,
|
|
11
|
+
v2_permissions_1.OpencodeV2Action.Execute,
|
|
12
|
+
v2_permissions_1.OpencodeV2Action.Glob,
|
|
13
|
+
v2_permissions_1.OpencodeV2Action.Grep,
|
|
14
|
+
v2_permissions_1.OpencodeV2Action.Question,
|
|
15
|
+
v2_permissions_1.OpencodeV2Action.Read,
|
|
16
|
+
v2_permissions_1.OpencodeV2Action.Shell,
|
|
17
|
+
v2_permissions_1.OpencodeV2Action.Skill,
|
|
18
|
+
v2_permissions_1.OpencodeV2Action.Subagent,
|
|
19
|
+
v2_permissions_1.OpencodeV2Action.Webfetch,
|
|
20
|
+
v2_permissions_1.OpencodeV2Action.Websearch,
|
|
21
21
|
];
|
|
22
22
|
exports.OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS = Object.freeze({
|
|
23
|
-
|
|
24
|
-
compaction: Object.freeze({ auto: true
|
|
23
|
+
snapshots: true,
|
|
24
|
+
compaction: Object.freeze({ auto: true }),
|
|
25
25
|
});
|
|
26
26
|
function resolveOpencodeRuntimeProfileSettings(authored) {
|
|
27
27
|
const defaults = exports.OPENCODE_RUNTIME_PROFILE_SETTING_DEFAULTS;
|
|
28
28
|
return {
|
|
29
|
-
|
|
29
|
+
snapshots: authored.snapshot ?? defaults.snapshots,
|
|
30
30
|
compaction: {
|
|
31
31
|
auto: authored.compaction?.auto ?? defaults.compaction.auto,
|
|
32
|
-
prune: authored.compaction?.prune ?? defaults.compaction.prune,
|
|
33
32
|
},
|
|
34
33
|
};
|
|
35
34
|
}
|
|
36
35
|
exports.OPENCODE_AUTHORED_SETTINGS_KEYS = ['compaction', 'snapshot'];
|
|
37
|
-
exports.OPENCODE_AUTHORED_COMPACTION_KEYS = ['auto'
|
|
36
|
+
exports.OPENCODE_AUTHORED_COMPACTION_KEYS = ['auto'];
|
|
38
37
|
exports.OPENCODE_EXCLUDED_NATIVE_PERMISSION_REFS = Object.freeze({
|
|
39
38
|
external_directory: 'external_directory is deliberately not governed by a RuntimeProfile: filesystem reach is ' +
|
|
40
39
|
'ENVIRONMENT authority, decided by the workspace mount, not a runtime preference. The ' +
|
|
41
40
|
'authored decision was dropped and the subject stays denied by the catch-all.',
|
|
42
41
|
});
|
|
43
42
|
const NATIVE_PERMISSION_REF_SET = new Set(exports.OPENCODE_NATIVE_PERMISSION_REFS);
|
|
44
|
-
function
|
|
45
|
-
|
|
43
|
+
function translateRuntimeProfileNativeRef(value) {
|
|
44
|
+
const action = (0, v2_permissions_1.translateAuthoredPermissionKey)(value);
|
|
45
|
+
return action !== undefined && NATIVE_PERMISSION_REF_SET.has(action)
|
|
46
|
+
? action
|
|
47
|
+
: undefined;
|
|
46
48
|
}
|
|
47
49
|
exports.OpencodeRuntimeProfileSchema = worker_runtime_1.RuntimeProfileContentSchema.superRefine((profile, context) => {
|
|
48
50
|
if (profile.runtimeKind !== worker_runtime_1.WorkerRuntimeKind.Opencode) {
|
|
@@ -62,16 +64,12 @@ function addSettingsIssues(settings, context) {
|
|
|
62
64
|
return;
|
|
63
65
|
}
|
|
64
66
|
const compaction = settings.compaction;
|
|
65
|
-
for (const key of
|
|
67
|
+
for (const key of exports.OPENCODE_AUTHORED_COMPACTION_KEYS) {
|
|
66
68
|
if (Object.hasOwn(compaction, key) && typeof compaction[key] !== 'boolean') {
|
|
67
69
|
addIssue(context, ['settings', 'compaction', key], `${key} must be a boolean.`);
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
|
-
exports.OPENCODE_RETIRED_COMPACTION_KEYS = Object.freeze({
|
|
72
|
-
reservedTokens: 'reservedTokens is no longer authored: the compaction reserve is derived per session ' +
|
|
73
|
-
"from the primary model's context window, which a profile author cannot know. Remove the key.",
|
|
74
|
-
});
|
|
75
73
|
function addIssue(context, path, message) {
|
|
76
74
|
context.addIssue({ code: 'custom', path: [...path], message });
|
|
77
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-profile.js","sourceRoot":"","sources":["../../src/lib/runtime-profile.ts"],"names":[],"mappings":";;;AAoIA,
|
|
1
|
+
{"version":3,"file":"runtime-profile.js","sourceRoot":"","sources":["../../src/lib/runtime-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const OPENCODE_V2_CONFIG_CONTRACT_SOURCE: Readonly<{
|
|
3
|
+
opencodeVersion: "2.0.20";
|
|
4
|
+
artifact: "OpenAPI document served by `opencode serve` 2.0.20 (\"opencode HttpApi\", 116 paths) — components.schemas[\"Config.InfoEncoded\"]";
|
|
5
|
+
sha256: "2982f2a00c1571738a3269ccadb624f0961ca1d3fef23b1264ecea7be5ad8346";
|
|
6
|
+
}>;
|
|
7
|
+
export declare const OpencodeV2PermissionRulesetSchema: z.ZodArray<z.ZodObject<{
|
|
8
|
+
action: z.ZodString;
|
|
9
|
+
resource: z.ZodString;
|
|
10
|
+
effect: z.ZodEnum<{
|
|
11
|
+
allow: "allow";
|
|
12
|
+
deny: "deny";
|
|
13
|
+
ask: "ask";
|
|
14
|
+
}>;
|
|
15
|
+
}, z.core.$strict>>;
|
|
16
|
+
export declare const OpencodeV2CompactionSchema: z.ZodObject<{
|
|
17
|
+
auto: z.ZodOptional<z.ZodBoolean>;
|
|
18
|
+
keep: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
tokens: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
}, z.core.$strict>>;
|
|
21
|
+
buffer: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
}, z.core.$strict>;
|
|
23
|
+
export declare const OpencodeV2ConfigContractSchema: z.ZodObject<{
|
|
24
|
+
$schema: z.ZodOptional<z.ZodString>;
|
|
25
|
+
shell: z.ZodOptional<z.ZodString>;
|
|
26
|
+
model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
27
|
+
providerID: z.ZodString;
|
|
28
|
+
model: z.ZodString;
|
|
29
|
+
variant: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.core.$strict>]>>;
|
|
31
|
+
default_agent: z.ZodOptional<z.ZodString>;
|
|
32
|
+
update: z.ZodOptional<z.ZodEnum<{
|
|
33
|
+
auto: "auto";
|
|
34
|
+
disable: "disable";
|
|
35
|
+
notify: "notify";
|
|
36
|
+
}>>;
|
|
37
|
+
share: z.ZodOptional<z.ZodEnum<{
|
|
38
|
+
auto: "auto";
|
|
39
|
+
disabled: "disabled";
|
|
40
|
+
manual: "manual";
|
|
41
|
+
}>>;
|
|
42
|
+
enterprise: z.ZodOptional<z.ZodUnknown>;
|
|
43
|
+
username: z.ZodOptional<z.ZodUnknown>;
|
|
44
|
+
permissions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
45
|
+
action: z.ZodString;
|
|
46
|
+
resource: z.ZodString;
|
|
47
|
+
effect: z.ZodEnum<{
|
|
48
|
+
allow: "allow";
|
|
49
|
+
deny: "deny";
|
|
50
|
+
ask: "ask";
|
|
51
|
+
}>;
|
|
52
|
+
}, z.core.$strict>>>;
|
|
53
|
+
agents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
54
|
+
model: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
55
|
+
providerID: z.ZodString;
|
|
56
|
+
model: z.ZodString;
|
|
57
|
+
variant: z.ZodOptional<z.ZodString>;
|
|
58
|
+
}, z.core.$strict>]>>;
|
|
59
|
+
request: z.ZodOptional<z.ZodObject<{
|
|
60
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
61
|
+
body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
62
|
+
}, z.core.$strict>>;
|
|
63
|
+
system: z.ZodOptional<z.ZodString>;
|
|
64
|
+
description: z.ZodOptional<z.ZodString>;
|
|
65
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
66
|
+
subagent: "subagent";
|
|
67
|
+
primary: "primary";
|
|
68
|
+
all: "all";
|
|
69
|
+
}>>;
|
|
70
|
+
hidden: z.ZodOptional<z.ZodBoolean>;
|
|
71
|
+
color: z.ZodOptional<z.ZodString>;
|
|
72
|
+
steps: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
disabled: z.ZodOptional<z.ZodBoolean>;
|
|
74
|
+
permissions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
75
|
+
action: z.ZodString;
|
|
76
|
+
resource: z.ZodString;
|
|
77
|
+
effect: z.ZodEnum<{
|
|
78
|
+
allow: "allow";
|
|
79
|
+
deny: "deny";
|
|
80
|
+
ask: "ask";
|
|
81
|
+
}>;
|
|
82
|
+
}, z.core.$strict>>>;
|
|
83
|
+
}, z.core.$strict>>>;
|
|
84
|
+
snapshots: z.ZodOptional<z.ZodBoolean>;
|
|
85
|
+
watcher: z.ZodOptional<z.ZodUnknown>;
|
|
86
|
+
formatter: z.ZodOptional<z.ZodUnknown>;
|
|
87
|
+
lsp: z.ZodOptional<z.ZodUnknown>;
|
|
88
|
+
media: z.ZodOptional<z.ZodUnknown>;
|
|
89
|
+
tool_output: z.ZodOptional<z.ZodUnknown>;
|
|
90
|
+
mcp: z.ZodOptional<z.ZodUnknown>;
|
|
91
|
+
compaction: z.ZodOptional<z.ZodObject<{
|
|
92
|
+
auto: z.ZodOptional<z.ZodBoolean>;
|
|
93
|
+
keep: z.ZodOptional<z.ZodObject<{
|
|
94
|
+
tokens: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
}, z.core.$strict>>;
|
|
96
|
+
buffer: z.ZodOptional<z.ZodNumber>;
|
|
97
|
+
}, z.core.$strict>>;
|
|
98
|
+
skills: z.ZodOptional<z.ZodUnknown>;
|
|
99
|
+
commands: z.ZodOptional<z.ZodUnknown>;
|
|
100
|
+
instructions: z.ZodOptional<z.ZodUnknown>;
|
|
101
|
+
references: z.ZodOptional<z.ZodUnknown>;
|
|
102
|
+
websearch: z.ZodOptional<z.ZodUnknown>;
|
|
103
|
+
plugins: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
104
|
+
package: z.ZodString;
|
|
105
|
+
options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
106
|
+
}, z.core.$strict>]>>>;
|
|
107
|
+
worktree: z.ZodOptional<z.ZodUnknown>;
|
|
108
|
+
warming: z.ZodOptional<z.ZodUnknown>;
|
|
109
|
+
providers: z.ZodOptional<z.ZodUnknown>;
|
|
110
|
+
experimental: z.ZodOptional<z.ZodObject<{
|
|
111
|
+
portable_shell_scanner: z.ZodOptional<z.ZodBoolean>;
|
|
112
|
+
subagent_depth: z.ZodOptional<z.ZodNumber>;
|
|
113
|
+
policies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
114
|
+
action: z.ZodEnum<{
|
|
115
|
+
"provider.use": "provider.use";
|
|
116
|
+
permission: "permission";
|
|
117
|
+
}>;
|
|
118
|
+
resource: z.ZodString;
|
|
119
|
+
effect: z.ZodEnum<{
|
|
120
|
+
allow: "allow";
|
|
121
|
+
deny: "deny";
|
|
122
|
+
}>;
|
|
123
|
+
}, z.core.$strict>>>;
|
|
124
|
+
}, z.core.$strict>>;
|
|
125
|
+
}, z.core.$strict>;
|
|
126
|
+
export type OpencodeV2ConfigContract = z.infer<typeof OpencodeV2ConfigContractSchema>;
|
|
127
|
+
//# sourceMappingURL=v2-config-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-config-contract.d.ts","sourceRoot":"","sources":["../../src/lib/v2-config-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB,eAAO,MAAM,kCAAkC;;;;EAK7C,CAAC;AAUH,eAAO,MAAM,iCAAiC;;;;;;;;mBAAgC,CAAC;AA4C/E,eAAO,MAAM,0BAA0B;;;;;;kBAM5B,CAAC;AAsBZ,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+BhC,CAAC;AAEZ,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpencodeV2ConfigContractSchema = exports.OpencodeV2CompactionSchema = exports.OpencodeV2PermissionRulesetSchema = exports.OPENCODE_V2_CONFIG_CONTRACT_SOURCE = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.OPENCODE_V2_CONFIG_CONTRACT_SOURCE = Object.freeze({
|
|
6
|
+
opencodeVersion: '2.0.20',
|
|
7
|
+
artifact: 'OpenAPI document served by `opencode serve` 2.0.20 ("opencode HttpApi", 116 paths) — components.schemas["Config.InfoEncoded"]',
|
|
8
|
+
sha256: '2982f2a00c1571738a3269ccadb624f0961ca1d3fef23b1264ecea7be5ad8346',
|
|
9
|
+
});
|
|
10
|
+
const PermissionRuleSchema = zod_1.z
|
|
11
|
+
.object({
|
|
12
|
+
action: zod_1.z.string(),
|
|
13
|
+
resource: zod_1.z.string(),
|
|
14
|
+
effect: zod_1.z.enum(['allow', 'deny', 'ask']),
|
|
15
|
+
})
|
|
16
|
+
.strict();
|
|
17
|
+
exports.OpencodeV2PermissionRulesetSchema = zod_1.z.array(PermissionRuleSchema);
|
|
18
|
+
const ModelRefSchema = zod_1.z.union([
|
|
19
|
+
zod_1.z.string().regex(/^[^/#]+\/[^#]+(?:#[^#]+)?$/),
|
|
20
|
+
zod_1.z
|
|
21
|
+
.object({
|
|
22
|
+
providerID: zod_1.z.string().regex(/^[^/#]+$/),
|
|
23
|
+
model: zod_1.z.string().regex(/^[^#]+$/),
|
|
24
|
+
variant: zod_1.z.string().regex(/^[^#]+$/).optional(),
|
|
25
|
+
})
|
|
26
|
+
.strict(),
|
|
27
|
+
]);
|
|
28
|
+
const AgentSchema = zod_1.z
|
|
29
|
+
.object({
|
|
30
|
+
model: ModelRefSchema.optional(),
|
|
31
|
+
request: zod_1.z
|
|
32
|
+
.object({
|
|
33
|
+
headers: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
|
|
34
|
+
body: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
35
|
+
})
|
|
36
|
+
.strict()
|
|
37
|
+
.optional(),
|
|
38
|
+
system: zod_1.z.string().optional(),
|
|
39
|
+
description: zod_1.z.string().optional(),
|
|
40
|
+
mode: zod_1.z.enum(['subagent', 'primary', 'all']).optional(),
|
|
41
|
+
hidden: zod_1.z.boolean().optional(),
|
|
42
|
+
color: zod_1.z.string().regex(/^#[0-9a-fA-F]{6}$/).optional(),
|
|
43
|
+
steps: zod_1.z.number().int().positive().optional(),
|
|
44
|
+
disabled: zod_1.z.boolean().optional(),
|
|
45
|
+
permissions: exports.OpencodeV2PermissionRulesetSchema.optional(),
|
|
46
|
+
})
|
|
47
|
+
.strict();
|
|
48
|
+
const PluginEntrySchema = zod_1.z.union([
|
|
49
|
+
zod_1.z.string(),
|
|
50
|
+
zod_1.z
|
|
51
|
+
.object({
|
|
52
|
+
package: zod_1.z.string(),
|
|
53
|
+
options: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
54
|
+
})
|
|
55
|
+
.strict(),
|
|
56
|
+
]);
|
|
57
|
+
exports.OpencodeV2CompactionSchema = zod_1.z
|
|
58
|
+
.object({
|
|
59
|
+
auto: zod_1.z.boolean().optional(),
|
|
60
|
+
keep: zod_1.z.object({ tokens: zod_1.z.number().int().min(0).optional() }).strict().optional(),
|
|
61
|
+
buffer: zod_1.z.number().int().min(0).optional(),
|
|
62
|
+
})
|
|
63
|
+
.strict();
|
|
64
|
+
const ExperimentalSchema = zod_1.z
|
|
65
|
+
.object({
|
|
66
|
+
portable_shell_scanner: zod_1.z.boolean().optional(),
|
|
67
|
+
subagent_depth: zod_1.z.number().int().min(0).optional(),
|
|
68
|
+
policies: zod_1.z
|
|
69
|
+
.array(zod_1.z
|
|
70
|
+
.object({
|
|
71
|
+
action: zod_1.z.enum(['provider.use', 'permission']),
|
|
72
|
+
resource: zod_1.z.string(),
|
|
73
|
+
effect: zod_1.z.enum(['allow', 'deny']),
|
|
74
|
+
})
|
|
75
|
+
.strict())
|
|
76
|
+
.optional(),
|
|
77
|
+
})
|
|
78
|
+
.strict();
|
|
79
|
+
const opaque = zod_1.z.unknown().optional();
|
|
80
|
+
exports.OpencodeV2ConfigContractSchema = zod_1.z
|
|
81
|
+
.object({
|
|
82
|
+
$schema: zod_1.z.string().optional(),
|
|
83
|
+
shell: zod_1.z.string().optional(),
|
|
84
|
+
model: ModelRefSchema.optional(),
|
|
85
|
+
default_agent: zod_1.z.string().optional(),
|
|
86
|
+
update: zod_1.z.enum(['disable', 'notify', 'auto']).optional(),
|
|
87
|
+
share: zod_1.z.enum(['manual', 'auto', 'disabled']).optional(),
|
|
88
|
+
enterprise: opaque,
|
|
89
|
+
username: opaque,
|
|
90
|
+
permissions: exports.OpencodeV2PermissionRulesetSchema.optional(),
|
|
91
|
+
agents: zod_1.z.record(zod_1.z.string(), AgentSchema).optional(),
|
|
92
|
+
snapshots: zod_1.z.boolean().optional(),
|
|
93
|
+
watcher: opaque,
|
|
94
|
+
formatter: opaque,
|
|
95
|
+
lsp: opaque,
|
|
96
|
+
media: opaque,
|
|
97
|
+
tool_output: opaque,
|
|
98
|
+
mcp: opaque,
|
|
99
|
+
compaction: exports.OpencodeV2CompactionSchema.optional(),
|
|
100
|
+
skills: opaque,
|
|
101
|
+
commands: opaque,
|
|
102
|
+
instructions: opaque,
|
|
103
|
+
references: opaque,
|
|
104
|
+
websearch: opaque,
|
|
105
|
+
plugins: zod_1.z.array(PluginEntrySchema).optional(),
|
|
106
|
+
worktree: opaque,
|
|
107
|
+
warming: opaque,
|
|
108
|
+
providers: opaque,
|
|
109
|
+
experimental: ExperimentalSchema.optional(),
|
|
110
|
+
})
|
|
111
|
+
.strict();
|
|
112
|
+
//# sourceMappingURL=v2-config-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-config-contract.js","sourceRoot":"","sources":["../../src/lib/v2-config-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export declare enum OpencodeV2Action {
|
|
2
|
+
Read = "read",
|
|
3
|
+
Glob = "glob",
|
|
4
|
+
Grep = "grep",
|
|
5
|
+
Edit = "edit",
|
|
6
|
+
Shell = "shell",
|
|
7
|
+
Webfetch = "webfetch",
|
|
8
|
+
Websearch = "websearch",
|
|
9
|
+
Question = "question",
|
|
10
|
+
Skill = "skill",
|
|
11
|
+
Subagent = "subagent",
|
|
12
|
+
Execute = "execute",
|
|
13
|
+
ExternalDirectory = "external_directory",
|
|
14
|
+
Browser = "browser"
|
|
15
|
+
}
|
|
16
|
+
export declare const OPENCODE_V2_NATIVE_ACTIONS: readonly OpencodeV2Action[];
|
|
17
|
+
export declare const OPENCODE_V2_PLATFORM_DENIED_ACTIONS: readonly OpencodeV2Action[];
|
|
18
|
+
export type OpencodeV2PermissionEffect = 'allow' | 'deny';
|
|
19
|
+
export interface OpencodeV2PermissionRule {
|
|
20
|
+
readonly action: string;
|
|
21
|
+
readonly resource: string;
|
|
22
|
+
readonly effect: OpencodeV2PermissionEffect;
|
|
23
|
+
}
|
|
24
|
+
export type AuthoredPermissionAction = 'allow' | 'ask' | 'deny';
|
|
25
|
+
export type AuthoredPermissionRule = AuthoredPermissionAction | Readonly<Record<string, AuthoredPermissionAction>>;
|
|
26
|
+
export type AuthoredPermissionMap = Readonly<Record<string, AuthoredPermissionRule>>;
|
|
27
|
+
export declare const OPENCODE_V1_PERMISSION_KEY_TRANSLATION: Readonly<Record<string, OpencodeV2Action>>;
|
|
28
|
+
export declare const OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET: readonly string[];
|
|
29
|
+
export declare const OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS: readonly string[];
|
|
30
|
+
export declare function translateAuthoredPermissionKey(key: string): OpencodeV2Action | undefined;
|
|
31
|
+
export declare function isAuthoredNativePermissionKey(key: string): boolean;
|
|
32
|
+
export declare function projectAuthoredEffect(action: AuthoredPermissionAction): OpencodeV2PermissionEffect;
|
|
33
|
+
export declare function matchesV2Wildcard(pattern: string, value: string): boolean;
|
|
34
|
+
export declare function sanitizeMcpName(name: string): string;
|
|
35
|
+
export interface ProjectOpencodeV2PermissionsInput {
|
|
36
|
+
readonly scope: 'global' | 'agent';
|
|
37
|
+
readonly permission: AuthoredPermissionMap;
|
|
38
|
+
readonly tools?: Readonly<Record<string, boolean>>;
|
|
39
|
+
readonly delegates?: readonly string[];
|
|
40
|
+
readonly runtimeTools?: readonly string[];
|
|
41
|
+
readonly mcpServers?: readonly string[];
|
|
42
|
+
}
|
|
43
|
+
export declare function projectOpencodeV2Permissions(input: ProjectOpencodeV2PermissionsInput): readonly OpencodeV2PermissionRule[];
|
|
44
|
+
export declare function platformCeilingRules(): OpencodeV2PermissionRule[];
|
|
45
|
+
export declare function evaluateOpencodeV2Permission(rules: readonly {
|
|
46
|
+
readonly action: string;
|
|
47
|
+
readonly resource: string;
|
|
48
|
+
readonly effect: string;
|
|
49
|
+
}[], action: string, resource: string): 'allow' | 'deny' | 'ask';
|
|
50
|
+
//# sourceMappingURL=v2-permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-permissions.d.ts","sourceRoot":"","sources":["../../src/lib/v2-permissions.ts"],"names":[],"mappings":"AAwDA,oBAAY,gBAAgB;IAC1B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,iBAAiB,uBAAuB;IACxC,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,0BAA0B,EAAE,SAAS,gBAAgB,EAClB,CAAC;AAMjD,eAAO,MAAM,mCAAmC,EAAE,SAAS,gBAAgB,EAMvE,CAAC;AAGL,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;CAC7C;AAGD,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAGhE,MAAM,MAAM,sBAAsB,GAC9B,wBAAwB,GACxB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;AAGvD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAOrF,eAAO,MAAM,sCAAsC,EAAE,QAAQ,CAC3D,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAOhC,CAAC;AASH,eAAO,MAAM,6CAA6C,EAAE,SAAS,MAAM,EAC9B,CAAC;AAS9C,eAAO,MAAM,qCAAqC,EAAE,SAAS,MAAM,EAEjE,CAAC;AAMH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,GACV,gBAAgB,GAAG,SAAS,CAK9B;AAGD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElE;AAGD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,wBAAwB,GAC/B,0BAA0B,CAU5B;AAMD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAQzE;AAiCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAgBD,MAAM,WAAW,iCAAiC;IAQhD,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAEnC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAM3C,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAOnD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IASvC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAM1C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAMD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iCAAiC,GACvC,SAAS,wBAAwB,EAAE,CA4DrC;AAGD,wBAAgB,oBAAoB,IAAI,wBAAwB,EAAE,CAMjE;AAOD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,EACjG,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,GAAG,MAAM,GAAG,KAAK,CAQ1B"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS = exports.OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET = exports.OPENCODE_V1_PERMISSION_KEY_TRANSLATION = exports.OPENCODE_V2_PLATFORM_DENIED_ACTIONS = exports.OPENCODE_V2_NATIVE_ACTIONS = exports.OpencodeV2Action = void 0;
|
|
4
|
+
exports.translateAuthoredPermissionKey = translateAuthoredPermissionKey;
|
|
5
|
+
exports.isAuthoredNativePermissionKey = isAuthoredNativePermissionKey;
|
|
6
|
+
exports.projectAuthoredEffect = projectAuthoredEffect;
|
|
7
|
+
exports.matchesV2Wildcard = matchesV2Wildcard;
|
|
8
|
+
exports.sanitizeMcpName = sanitizeMcpName;
|
|
9
|
+
exports.projectOpencodeV2Permissions = projectOpencodeV2Permissions;
|
|
10
|
+
exports.platformCeilingRules = platformCeilingRules;
|
|
11
|
+
exports.evaluateOpencodeV2Permission = evaluateOpencodeV2Permission;
|
|
12
|
+
var OpencodeV2Action;
|
|
13
|
+
(function (OpencodeV2Action) {
|
|
14
|
+
OpencodeV2Action["Read"] = "read";
|
|
15
|
+
OpencodeV2Action["Glob"] = "glob";
|
|
16
|
+
OpencodeV2Action["Grep"] = "grep";
|
|
17
|
+
OpencodeV2Action["Edit"] = "edit";
|
|
18
|
+
OpencodeV2Action["Shell"] = "shell";
|
|
19
|
+
OpencodeV2Action["Webfetch"] = "webfetch";
|
|
20
|
+
OpencodeV2Action["Websearch"] = "websearch";
|
|
21
|
+
OpencodeV2Action["Question"] = "question";
|
|
22
|
+
OpencodeV2Action["Skill"] = "skill";
|
|
23
|
+
OpencodeV2Action["Subagent"] = "subagent";
|
|
24
|
+
OpencodeV2Action["Execute"] = "execute";
|
|
25
|
+
OpencodeV2Action["ExternalDirectory"] = "external_directory";
|
|
26
|
+
OpencodeV2Action["Browser"] = "browser";
|
|
27
|
+
})(OpencodeV2Action || (exports.OpencodeV2Action = OpencodeV2Action = {}));
|
|
28
|
+
exports.OPENCODE_V2_NATIVE_ACTIONS = Object.freeze(Object.values(OpencodeV2Action));
|
|
29
|
+
exports.OPENCODE_V2_PLATFORM_DENIED_ACTIONS = Object.freeze([
|
|
30
|
+
OpencodeV2Action.Webfetch,
|
|
31
|
+
OpencodeV2Action.Websearch,
|
|
32
|
+
OpencodeV2Action.Browser,
|
|
33
|
+
OpencodeV2Action.Execute,
|
|
34
|
+
]);
|
|
35
|
+
exports.OPENCODE_V1_PERMISSION_KEY_TRANSLATION = Object.freeze({
|
|
36
|
+
bash: OpencodeV2Action.Shell,
|
|
37
|
+
task: OpencodeV2Action.Subagent,
|
|
38
|
+
write: OpencodeV2Action.Edit,
|
|
39
|
+
patch: OpencodeV2Action.Edit,
|
|
40
|
+
...Object.fromEntries(exports.OPENCODE_V2_NATIVE_ACTIONS.map((action) => [action, action])),
|
|
41
|
+
});
|
|
42
|
+
exports.OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET = Object.freeze(['lsp', 'doom_loop', 'list']);
|
|
43
|
+
exports.OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS = Object.freeze([
|
|
44
|
+
'todowrite',
|
|
45
|
+
]);
|
|
46
|
+
const NO_TARGET = new Set(exports.OPENCODE_V1_PERMISSION_KEYS_WITHOUT_V2_TARGET);
|
|
47
|
+
const RUNTIME_TOOL_KEYS = new Set(exports.OPENCODE_RUNTIME_TOOL_PERMISSION_KEYS);
|
|
48
|
+
function translateAuthoredPermissionKey(key) {
|
|
49
|
+
if (NO_TARGET.has(key))
|
|
50
|
+
return undefined;
|
|
51
|
+
return Object.hasOwn(exports.OPENCODE_V1_PERMISSION_KEY_TRANSLATION, key)
|
|
52
|
+
? exports.OPENCODE_V1_PERMISSION_KEY_TRANSLATION[key]
|
|
53
|
+
: undefined;
|
|
54
|
+
}
|
|
55
|
+
function isAuthoredNativePermissionKey(key) {
|
|
56
|
+
return NO_TARGET.has(key) || Object.hasOwn(exports.OPENCODE_V1_PERMISSION_KEY_TRANSLATION, key);
|
|
57
|
+
}
|
|
58
|
+
function projectAuthoredEffect(action) {
|
|
59
|
+
switch (action) {
|
|
60
|
+
case 'allow':
|
|
61
|
+
return 'allow';
|
|
62
|
+
case 'ask':
|
|
63
|
+
case 'deny':
|
|
64
|
+
return 'deny';
|
|
65
|
+
default:
|
|
66
|
+
throw new TypeError(`Unknown authored permission action "${String(action)}".`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function matchesV2Wildcard(pattern, value) {
|
|
70
|
+
let source = '^';
|
|
71
|
+
for (const ch of pattern) {
|
|
72
|
+
if (ch === '*')
|
|
73
|
+
source += '.*';
|
|
74
|
+
else if (ch === '?')
|
|
75
|
+
source += '.';
|
|
76
|
+
else
|
|
77
|
+
source += ch.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
78
|
+
}
|
|
79
|
+
return new RegExp(`${source}$`, 's').test(value);
|
|
80
|
+
}
|
|
81
|
+
const MCP_ACTION_PATTERN = /^[A-Za-z0-9-]+_/;
|
|
82
|
+
function assertPassThroughKey(key) {
|
|
83
|
+
const collides = exports.OPENCODE_V2_NATIVE_ACTIONS.some((action) => matchesV2Wildcard(key, action));
|
|
84
|
+
if (collides || !MCP_ACTION_PATTERN.test(key)) {
|
|
85
|
+
throw new TypeError(`Permission key "${key}" is not Xema permission vocabulary and cannot be passed ` +
|
|
86
|
+
'through as an MCP tool pattern: a pass-through must have the `<server>_<tool>` ' +
|
|
87
|
+
'shape with a literal server prefix and must not match any native OpenCode V2 ' +
|
|
88
|
+
'action under its wildcard rules, or it would silently widen a native tool.');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const RUNTIME_TOOL_ID_PATTERN = /^[A-Za-z0-9_-]{1,128}$/;
|
|
92
|
+
function assertRuntimeToolId(id) {
|
|
93
|
+
if (!RUNTIME_TOOL_ID_PATTERN.test(id) || translateAuthoredPermissionKey(id) !== undefined) {
|
|
94
|
+
throw new TypeError(`Runtime tool id "${id}" must be a literal V2 tool id (${RUNTIME_TOOL_ID_PATTERN.source}) ` +
|
|
95
|
+
'that does not name a native OpenCode action.');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function sanitizeMcpName(name) {
|
|
99
|
+
if (name.length === 0)
|
|
100
|
+
throw new TypeError('MCP server name must be non-empty.');
|
|
101
|
+
return name.replace(/[^A-Za-z0-9_-]/g, '_');
|
|
102
|
+
}
|
|
103
|
+
function rulesForKey(action, rule) {
|
|
104
|
+
if (typeof rule === 'string') {
|
|
105
|
+
return [{ action, resource: '*', effect: projectAuthoredEffect(rule) }];
|
|
106
|
+
}
|
|
107
|
+
if (rule === null || typeof rule !== 'object' || Array.isArray(rule)) {
|
|
108
|
+
throw new TypeError(`Permission rule for "${action}" must be a scalar action or a map.`);
|
|
109
|
+
}
|
|
110
|
+
return Object.entries(rule).map(([resource, decision]) => ({
|
|
111
|
+
action,
|
|
112
|
+
resource,
|
|
113
|
+
effect: projectAuthoredEffect(decision),
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
function projectOpencodeV2Permissions(input) {
|
|
117
|
+
const rules = [];
|
|
118
|
+
if (input.scope === 'global') {
|
|
119
|
+
rules.push({ action: '*', resource: '*', effect: 'deny' });
|
|
120
|
+
}
|
|
121
|
+
let subagentScalarRefusal = false;
|
|
122
|
+
for (const [key, rule] of Object.entries(input.permission)) {
|
|
123
|
+
if (RUNTIME_TOOL_KEYS.has(key)) {
|
|
124
|
+
rules.push(...rulesForKey(key, rule));
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (isAuthoredNativePermissionKey(key)) {
|
|
128
|
+
const action = translateAuthoredPermissionKey(key);
|
|
129
|
+
if (action === undefined)
|
|
130
|
+
continue;
|
|
131
|
+
if (action === OpencodeV2Action.Subagent) {
|
|
132
|
+
if (typeof rule === 'string' && projectAuthoredEffect(rule) === 'deny') {
|
|
133
|
+
subagentScalarRefusal = true;
|
|
134
|
+
}
|
|
135
|
+
if (input.delegates !== undefined)
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
rules.push(...rulesForKey(action, rule));
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
assertPassThroughKey(key);
|
|
142
|
+
rules.push(...rulesForKey(key, rule));
|
|
143
|
+
}
|
|
144
|
+
if (input.delegates !== undefined) {
|
|
145
|
+
rules.push({ action: OpencodeV2Action.Subagent, resource: '*', effect: 'deny' });
|
|
146
|
+
if (!subagentScalarRefusal) {
|
|
147
|
+
for (const delegate of input.delegates) {
|
|
148
|
+
rules.push({ action: OpencodeV2Action.Subagent, resource: delegate, effect: 'allow' });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
for (const id of input.runtimeTools ?? []) {
|
|
153
|
+
assertRuntimeToolId(id);
|
|
154
|
+
rules.push({ action: id, resource: '*', effect: 'allow' });
|
|
155
|
+
}
|
|
156
|
+
for (const server of input.mcpServers ?? []) {
|
|
157
|
+
const action = `${sanitizeMcpName(server)}_*`;
|
|
158
|
+
assertPassThroughKey(action);
|
|
159
|
+
rules.push({ action, resource: '*', effect: 'allow' });
|
|
160
|
+
}
|
|
161
|
+
for (const [tool, enabled] of Object.entries(input.tools ?? {})) {
|
|
162
|
+
if (enabled)
|
|
163
|
+
continue;
|
|
164
|
+
const action = RUNTIME_TOOL_KEYS.has(tool)
|
|
165
|
+
? tool
|
|
166
|
+
: isAuthoredNativePermissionKey(tool)
|
|
167
|
+
? translateAuthoredPermissionKey(tool)
|
|
168
|
+
: (assertPassThroughKey(tool), tool);
|
|
169
|
+
if (action === undefined)
|
|
170
|
+
continue;
|
|
171
|
+
rules.push({ action, resource: '*', effect: 'deny' });
|
|
172
|
+
}
|
|
173
|
+
rules.push(...platformCeilingRules());
|
|
174
|
+
return Object.freeze(rules.map((rule) => Object.freeze({ ...rule })));
|
|
175
|
+
}
|
|
176
|
+
function platformCeilingRules() {
|
|
177
|
+
return exports.OPENCODE_V2_PLATFORM_DENIED_ACTIONS.map((action) => ({
|
|
178
|
+
action,
|
|
179
|
+
resource: '*',
|
|
180
|
+
effect: 'deny',
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
function evaluateOpencodeV2Permission(rules, action, resource) {
|
|
184
|
+
let effect = 'ask';
|
|
185
|
+
for (const rule of rules) {
|
|
186
|
+
if (matchesV2Wildcard(rule.action, action) && matchesV2Wildcard(rule.resource, resource)) {
|
|
187
|
+
effect = rule.effect;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return effect;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=v2-permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-permissions.js","sourceRoot":"","sources":["../../src/lib/v2-permissions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/worker-runtime-opencode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Opencode WorkerRuntime driver — wraps the workspace-proxy control-session handshake and the opencode SSE event stream behind the kernel WorkerRuntime contract.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"prettier": "3.6.2",
|
|
28
28
|
"ts-jest": "^29.4.9",
|
|
29
29
|
"typescript": "5.9.3",
|
|
30
|
-
"@xemahq/contracts": "^0.
|
|
30
|
+
"@xemahq/contracts": "^0.26.0"
|
|
31
31
|
},
|
|
32
32
|
"exports": {
|
|
33
33
|
".": {
|
|
@@ -41,7 +41,10 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@xemahq/contracts": "
|
|
44
|
+
"@xemahq/contracts": ">=0.24.0"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"zod": "^4.3.6"
|
|
45
48
|
},
|
|
46
49
|
"scripts": {
|
|
47
50
|
"clean": "rm -rf dist",
|