@bolt-foundry/gambit-core 0.8.1 → 0.8.5-rc.3
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/README.md +60 -34
- package/cards/context.card.md +5 -5
- package/cards/generate-test-input.card.md +12 -0
- package/{script/deps/jsr.io/@std/collections/1.1.4 → esm/deps/jsr.io/@std/collections/1.1.5}/deep_merge.d.ts +2 -2
- package/esm/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.js +29 -19
- package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
- package/esm/mod.d.ts +20 -10
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +11 -5
- package/esm/schemas/graders/contexts/conversation.d.ts +22 -0
- package/esm/schemas/graders/contexts/conversation.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/conversation.js +17 -0
- package/esm/schemas/graders/contexts/conversation.zod.d.ts +3 -0
- package/esm/schemas/graders/contexts/conversation.zod.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/conversation.zod.js +2 -0
- package/esm/schemas/graders/contexts/conversation_tools.d.ts +31 -0
- package/esm/schemas/graders/contexts/conversation_tools.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/conversation_tools.js +25 -0
- package/esm/schemas/graders/contexts/conversation_tools.zod.d.ts +3 -0
- package/esm/schemas/graders/contexts/conversation_tools.zod.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/conversation_tools.zod.js +2 -0
- package/esm/schemas/graders/contexts/tools.d.ts +4 -0
- package/esm/schemas/graders/contexts/tools.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/tools.js +3 -0
- package/esm/schemas/graders/contexts/tools.zod.d.ts +3 -0
- package/esm/schemas/graders/contexts/tools.zod.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/tools.zod.js +2 -0
- package/esm/schemas/graders/contexts/turn.d.ts +10 -0
- package/esm/schemas/graders/contexts/turn.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/turn.js +8 -0
- package/esm/schemas/graders/contexts/turn.zod.d.ts +3 -0
- package/esm/schemas/graders/contexts/turn.zod.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/turn.zod.js +2 -0
- package/esm/schemas/graders/contexts/turn_tools.d.ts +32 -0
- package/esm/schemas/graders/contexts/turn_tools.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/turn_tools.js +28 -0
- package/esm/schemas/graders/contexts/turn_tools.zod.d.ts +3 -0
- package/esm/schemas/graders/contexts/turn_tools.zod.d.ts.map +1 -0
- package/esm/schemas/graders/contexts/turn_tools.zod.js +2 -0
- package/esm/schemas/graders/grader_output.d.ts +10 -0
- package/esm/schemas/graders/grader_output.d.ts.map +1 -0
- package/esm/schemas/graders/grader_output.js +8 -0
- package/esm/schemas/graders/grader_output.zod.d.ts +3 -0
- package/esm/schemas/graders/grader_output.zod.d.ts.map +1 -0
- package/esm/schemas/graders/grader_output.zod.js +2 -0
- package/esm/schemas/graders/respond.d.ts +12 -0
- package/esm/schemas/graders/respond.d.ts.map +1 -0
- package/esm/schemas/graders/respond.js +10 -0
- package/esm/schemas/graders/respond.zod.d.ts +3 -0
- package/esm/schemas/graders/respond.zod.d.ts.map +1 -0
- package/esm/schemas/graders/respond.zod.js +2 -0
- package/esm/schemas/scenarios/plain_chat_input_optional.d.ts +5 -0
- package/esm/schemas/scenarios/plain_chat_input_optional.d.ts.map +1 -0
- package/esm/schemas/scenarios/plain_chat_input_optional.js +5 -0
- package/esm/schemas/scenarios/plain_chat_input_optional.zod.d.ts +3 -0
- package/esm/schemas/scenarios/plain_chat_input_optional.zod.d.ts.map +1 -0
- package/esm/schemas/scenarios/plain_chat_input_optional.zod.js +2 -0
- package/esm/schemas/scenarios/plain_chat_output.d.ts +5 -0
- package/esm/schemas/scenarios/plain_chat_output.d.ts.map +1 -0
- package/esm/schemas/scenarios/plain_chat_output.js +4 -0
- package/esm/schemas/scenarios/plain_chat_output.zod.d.ts +3 -0
- package/esm/schemas/scenarios/plain_chat_output.zod.d.ts.map +1 -0
- package/esm/schemas/scenarios/plain_chat_output.zod.js +2 -0
- package/esm/src/builtins.d.ts +2 -0
- package/esm/src/builtins.d.ts.map +1 -1
- package/esm/src/builtins.js +45 -1
- package/esm/src/constants.d.ts +4 -0
- package/esm/src/constants.d.ts.map +1 -1
- package/esm/src/constants.js +5 -0
- package/esm/src/definitions.d.ts +5 -1
- package/esm/src/definitions.d.ts.map +1 -1
- package/esm/src/loader.d.ts.map +1 -1
- package/esm/src/loader.js +119 -13
- package/esm/src/markdown.d.ts.map +1 -1
- package/esm/src/markdown.js +222 -53
- package/esm/src/permissions.d.ts +143 -0
- package/esm/src/permissions.d.ts.map +1 -0
- package/esm/src/permissions.js +406 -0
- package/esm/src/render.d.ts.map +1 -1
- package/esm/src/render.js +22 -8
- package/esm/src/runtime.d.ts +28 -2
- package/esm/src/runtime.d.ts.map +1 -1
- package/esm/src/runtime.js +3051 -100
- package/esm/src/runtime_exec_host.d.ts +6 -0
- package/esm/src/runtime_exec_host.d.ts.map +1 -0
- package/esm/src/runtime_exec_host.js +17 -0
- package/esm/src/runtime_exec_host_contract.d.ts +23 -0
- package/esm/src/runtime_exec_host_contract.d.ts.map +1 -0
- package/esm/src/runtime_exec_host_contract.js +14 -0
- package/esm/src/runtime_exec_host_deno.d.ts +3 -0
- package/esm/src/runtime_exec_host_deno.d.ts.map +1 -0
- package/esm/src/runtime_exec_host_deno.js +35 -0
- package/esm/src/runtime_exec_host_unsupported.d.ts +3 -0
- package/esm/src/runtime_exec_host_unsupported.d.ts.map +1 -0
- package/esm/src/runtime_exec_host_unsupported.js +8 -0
- package/esm/src/runtime_worker_host.d.ts +6 -0
- package/esm/src/runtime_worker_host.d.ts.map +1 -0
- package/esm/src/runtime_worker_host.js +17 -0
- package/esm/src/runtime_worker_host_contract.d.ts +33 -0
- package/esm/src/runtime_worker_host_contract.d.ts.map +1 -0
- package/esm/src/runtime_worker_host_contract.js +14 -0
- package/esm/src/runtime_worker_host_deno.d.ts +3 -0
- package/esm/src/runtime_worker_host_deno.d.ts.map +1 -0
- package/esm/src/runtime_worker_host_deno.js +26 -0
- package/esm/src/runtime_worker_host_unsupported.d.ts +3 -0
- package/esm/src/runtime_worker_host_unsupported.d.ts.map +1 -0
- package/esm/src/runtime_worker_host_unsupported.js +8 -0
- package/esm/src/state.d.ts +4 -1
- package/esm/src/state.d.ts.map +1 -1
- package/esm/src/state.js +48 -2
- package/esm/src/types.d.ts +381 -1
- package/esm/src/types.d.ts.map +1 -1
- package/esm/src/types.js +102 -1
- package/package.json +73 -2
- package/schemas/graders/contexts/conversation.ts +32 -9
- package/schemas/graders/contexts/conversation.zod.ts +1 -0
- package/schemas/graders/contexts/conversation_tools.ts +63 -0
- package/schemas/graders/contexts/conversation_tools.zod.ts +1 -0
- package/schemas/graders/contexts/tools.ts +5 -0
- package/schemas/graders/contexts/tools.zod.ts +1 -0
- package/schemas/graders/contexts/turn.ts +8 -1
- package/schemas/graders/contexts/turn.zod.ts +1 -0
- package/schemas/graders/contexts/turn_tools.ts +63 -0
- package/schemas/graders/contexts/turn_tools.zod.ts +1 -0
- package/schemas/graders/grader_output.ts +15 -0
- package/schemas/graders/grader_output.zod.ts +1 -0
- package/schemas/graders/respond.ts +13 -3
- package/schemas/graders/respond.zod.ts +1 -0
- package/schemas/scenarios/plain_chat_input_optional.ts +6 -0
- package/schemas/scenarios/plain_chat_input_optional.zod.ts +1 -0
- package/schemas/scenarios/plain_chat_output.ts +5 -0
- package/schemas/scenarios/plain_chat_output.zod.ts +1 -0
- package/{esm/deps/jsr.io/@std/collections/1.1.4 → script/deps/jsr.io/@std/collections/1.1.5}/deep_merge.d.ts +2 -2
- package/script/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.js +29 -19
- package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
- package/script/mod.d.ts +20 -10
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +25 -9
- package/script/schemas/graders/contexts/conversation.d.ts +22 -0
- package/script/schemas/graders/contexts/conversation.d.ts.map +1 -0
- package/script/schemas/graders/contexts/conversation.js +20 -0
- package/script/schemas/graders/contexts/conversation.zod.d.ts +3 -0
- package/script/schemas/graders/contexts/conversation.zod.d.ts.map +1 -0
- package/script/schemas/graders/contexts/conversation.zod.js +9 -0
- package/script/schemas/graders/contexts/conversation_tools.d.ts +31 -0
- package/script/schemas/graders/contexts/conversation_tools.d.ts.map +1 -0
- package/script/schemas/graders/contexts/conversation_tools.js +28 -0
- package/script/schemas/graders/contexts/conversation_tools.zod.d.ts +3 -0
- package/script/schemas/graders/contexts/conversation_tools.zod.d.ts.map +1 -0
- package/script/schemas/graders/contexts/conversation_tools.zod.js +9 -0
- package/script/schemas/graders/contexts/tools.d.ts +4 -0
- package/script/schemas/graders/contexts/tools.d.ts.map +1 -0
- package/script/schemas/graders/contexts/tools.js +12 -0
- package/script/schemas/graders/contexts/tools.zod.d.ts +3 -0
- package/script/schemas/graders/contexts/tools.zod.d.ts.map +1 -0
- package/script/schemas/graders/contexts/tools.zod.js +9 -0
- package/script/schemas/graders/contexts/turn.d.ts +10 -0
- package/script/schemas/graders/contexts/turn.d.ts.map +1 -0
- package/script/schemas/graders/contexts/turn.js +10 -0
- package/script/schemas/graders/contexts/turn.zod.d.ts +3 -0
- package/script/schemas/graders/contexts/turn.zod.d.ts.map +1 -0
- package/script/schemas/graders/contexts/turn.zod.js +9 -0
- package/script/schemas/graders/contexts/turn_tools.d.ts +32 -0
- package/script/schemas/graders/contexts/turn_tools.d.ts.map +1 -0
- package/script/schemas/graders/contexts/turn_tools.js +31 -0
- package/script/schemas/graders/contexts/turn_tools.zod.d.ts +3 -0
- package/script/schemas/graders/contexts/turn_tools.zod.d.ts.map +1 -0
- package/script/schemas/graders/contexts/turn_tools.zod.js +9 -0
- package/script/schemas/graders/grader_output.d.ts +10 -0
- package/script/schemas/graders/grader_output.d.ts.map +1 -0
- package/script/schemas/graders/grader_output.js +10 -0
- package/script/schemas/graders/grader_output.zod.d.ts +3 -0
- package/script/schemas/graders/grader_output.zod.d.ts.map +1 -0
- package/script/schemas/graders/grader_output.zod.js +9 -0
- package/script/schemas/graders/respond.d.ts +12 -0
- package/script/schemas/graders/respond.d.ts.map +1 -0
- package/script/schemas/graders/respond.js +12 -0
- package/script/schemas/graders/respond.zod.d.ts +3 -0
- package/script/schemas/graders/respond.zod.d.ts.map +1 -0
- package/script/schemas/graders/respond.zod.js +9 -0
- package/script/schemas/scenarios/plain_chat_input_optional.d.ts +5 -0
- package/script/schemas/scenarios/plain_chat_input_optional.d.ts.map +1 -0
- package/script/schemas/scenarios/plain_chat_input_optional.js +7 -0
- package/script/schemas/scenarios/plain_chat_input_optional.zod.d.ts +3 -0
- package/script/schemas/scenarios/plain_chat_input_optional.zod.d.ts.map +1 -0
- package/script/schemas/scenarios/plain_chat_input_optional.zod.js +9 -0
- package/script/schemas/scenarios/plain_chat_output.d.ts +5 -0
- package/script/schemas/scenarios/plain_chat_output.d.ts.map +1 -0
- package/script/schemas/scenarios/plain_chat_output.js +6 -0
- package/script/schemas/scenarios/plain_chat_output.zod.d.ts +3 -0
- package/script/schemas/scenarios/plain_chat_output.zod.d.ts.map +1 -0
- package/script/schemas/scenarios/plain_chat_output.zod.js +9 -0
- package/script/src/builtins.d.ts +2 -0
- package/script/src/builtins.d.ts.map +1 -1
- package/script/src/builtins.js +47 -1
- package/script/src/constants.d.ts +4 -0
- package/script/src/constants.d.ts.map +1 -1
- package/script/src/constants.js +6 -1
- package/script/src/definitions.d.ts +5 -1
- package/script/src/definitions.d.ts.map +1 -1
- package/script/src/loader.d.ts.map +1 -1
- package/script/src/loader.js +118 -12
- package/script/src/markdown.d.ts.map +1 -1
- package/script/src/markdown.js +221 -52
- package/script/src/permissions.d.ts +143 -0
- package/script/src/permissions.d.ts.map +1 -0
- package/script/src/permissions.js +453 -0
- package/script/src/render.d.ts.map +1 -1
- package/script/src/render.js +22 -8
- package/script/src/runtime.d.ts +28 -2
- package/script/src/runtime.d.ts.map +1 -1
- package/script/src/runtime.js +3053 -99
- package/script/src/runtime_exec_host.d.ts +6 -0
- package/script/src/runtime_exec_host.d.ts.map +1 -0
- package/script/src/runtime_exec_host.js +56 -0
- package/script/src/runtime_exec_host_contract.d.ts +23 -0
- package/script/src/runtime_exec_host_contract.d.ts.map +1 -0
- package/script/src/runtime_exec_host_contract.js +18 -0
- package/script/src/runtime_exec_host_deno.d.ts +3 -0
- package/script/src/runtime_exec_host_deno.d.ts.map +1 -0
- package/script/src/runtime_exec_host_deno.js +71 -0
- package/script/src/runtime_exec_host_unsupported.d.ts +3 -0
- package/script/src/runtime_exec_host_unsupported.d.ts.map +1 -0
- package/script/src/runtime_exec_host_unsupported.js +11 -0
- package/script/src/runtime_worker_host.d.ts +6 -0
- package/script/src/runtime_worker_host.d.ts.map +1 -0
- package/script/src/runtime_worker_host.js +56 -0
- package/script/src/runtime_worker_host_contract.d.ts +33 -0
- package/script/src/runtime_worker_host_contract.d.ts.map +1 -0
- package/script/src/runtime_worker_host_contract.js +18 -0
- package/script/src/runtime_worker_host_deno.d.ts +3 -0
- package/script/src/runtime_worker_host_deno.d.ts.map +1 -0
- package/script/src/runtime_worker_host_deno.js +62 -0
- package/script/src/runtime_worker_host_unsupported.d.ts +3 -0
- package/script/src/runtime_worker_host_unsupported.d.ts.map +1 -0
- package/script/src/runtime_worker_host_unsupported.js +11 -0
- package/script/src/state.d.ts +4 -1
- package/script/src/state.d.ts.map +1 -1
- package/script/src/state.js +48 -2
- package/script/src/types.d.ts +381 -1
- package/script/src/types.d.ts.map +1 -1
- package/script/src/types.js +103 -0
- package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts +0 -6
- package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.js +0 -18
- package/esm/src/openai_compat.d.ts +0 -63
- package/esm/src/openai_compat.d.ts.map +0 -1
- package/esm/src/openai_compat.js +0 -272
- package/esm/src/providers/openrouter.d.ts +0 -8
- package/esm/src/providers/openrouter.d.ts.map +0 -1
- package/esm/src/providers/openrouter.js +0 -168
- package/script/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts +0 -6
- package/script/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/collections/1.1.4/_utils.js +0 -21
- package/script/src/openai_compat.d.ts +0 -63
- package/script/src/openai_compat.d.ts.map +0 -1
- package/script/src/openai_compat.js +0 -276
- package/script/src/providers/openrouter.d.ts +0 -8
- package/script/src/providers/openrouter.d.ts.map +0 -1
- package/script/src/providers/openrouter.js +0 -207
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain_chat_output.d.ts","sourceRoot":"","sources":["../../../src/schemas/scenarios/plain_chat_output.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAc,CAAC;AAE5D,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain_chat_output.zod.d.ts","sourceRoot":"","sources":["../../../src/schemas/scenarios/plain_chat_output.zod.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
require("../../_dnt.polyfills.js");
|
|
8
|
+
var plain_chat_output_js_1 = require("./plain_chat_output.js");
|
|
9
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(plain_chat_output_js_1).default; } });
|
package/script/src/builtins.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export declare function resolveBuiltinCardPath(target: string): string | undefined;
|
|
2
|
+
export declare function resolveBuiltinSnippetPath(target: string): string | undefined;
|
|
2
3
|
export declare function resolveBuiltinSchemaPath(target: string): string | undefined;
|
|
4
|
+
export declare function resolveBuiltinDeckPath(target: string): string | undefined;
|
|
3
5
|
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/src/builtins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/src/builtins.ts"],"names":[],"mappings":"AAqBA,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAazE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO5E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgB3E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBzE"}
|
package/script/src/builtins.js
CHANGED
|
@@ -34,30 +34,76 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.resolveBuiltinCardPath = resolveBuiltinCardPath;
|
|
37
|
+
exports.resolveBuiltinSnippetPath = resolveBuiltinSnippetPath;
|
|
37
38
|
exports.resolveBuiltinSchemaPath = resolveBuiltinSchemaPath;
|
|
39
|
+
exports.resolveBuiltinDeckPath = resolveBuiltinDeckPath;
|
|
38
40
|
const path = __importStar(require("../deps/jsr.io/@std/path/1.1.4/mod.js"));
|
|
39
41
|
const CARDS_PREFIX = "gambit://cards/";
|
|
42
|
+
const SNIPPETS_PREFIX = "gambit://snippets/";
|
|
40
43
|
const SCHEMAS_PREFIX = "gambit://schemas/";
|
|
44
|
+
const DECKS_PREFIX = "gambit://decks/";
|
|
41
45
|
const CARDS_BASE_URL = new URL("../cards/", globalThis[Symbol.for("import-meta-ponyfill-commonjs")](require, module).url);
|
|
46
|
+
const SNIPPETS_BASE_URL = new URL("../snippets/", globalThis[Symbol.for("import-meta-ponyfill-commonjs")](require, module).url);
|
|
42
47
|
const SCHEMAS_BASE_URL = new URL("../schemas/", globalThis[Symbol.for("import-meta-ponyfill-commonjs")](require, module).url);
|
|
48
|
+
const DECKS_BASE_URL = new URL("../decks/", globalThis[Symbol.for("import-meta-ponyfill-commonjs")](require, module).url);
|
|
49
|
+
const LEGACY_CARD_WARNINGS = new Set();
|
|
50
|
+
const LEGACY_SCHEMA_WARNINGS = new Set();
|
|
51
|
+
const LEGACY_DECK_WARNINGS = new Set();
|
|
52
|
+
const logger = console;
|
|
43
53
|
function resolveFromBase(base, relative) {
|
|
44
54
|
return path.fromFileUrl(new URL(relative, base));
|
|
45
55
|
}
|
|
46
56
|
function resolveBuiltinCardPath(target) {
|
|
47
57
|
if (!target.startsWith(CARDS_PREFIX))
|
|
48
58
|
return undefined;
|
|
59
|
+
if (!LEGACY_CARD_WARNINGS.has(target)) {
|
|
60
|
+
LEGACY_CARD_WARNINGS.add(target);
|
|
61
|
+
logger.warn(`[gambit] "${target}" is deprecated; use gambit://snippets instead.`);
|
|
62
|
+
}
|
|
49
63
|
const relative = target.slice(CARDS_PREFIX.length);
|
|
50
64
|
if (!relative) {
|
|
51
65
|
throw new Error(`Invalid gambit card specifier: ${target}`);
|
|
52
66
|
}
|
|
53
67
|
return resolveFromBase(CARDS_BASE_URL, relative);
|
|
54
68
|
}
|
|
69
|
+
function resolveBuiltinSnippetPath(target) {
|
|
70
|
+
if (!target.startsWith(SNIPPETS_PREFIX))
|
|
71
|
+
return undefined;
|
|
72
|
+
const relative = target.slice(SNIPPETS_PREFIX.length);
|
|
73
|
+
if (!relative) {
|
|
74
|
+
throw new Error(`Invalid gambit snippet specifier: ${target}`);
|
|
75
|
+
}
|
|
76
|
+
return resolveFromBase(SNIPPETS_BASE_URL, relative);
|
|
77
|
+
}
|
|
55
78
|
function resolveBuiltinSchemaPath(target) {
|
|
56
79
|
if (!target.startsWith(SCHEMAS_PREFIX))
|
|
57
80
|
return undefined;
|
|
58
|
-
|
|
81
|
+
let relative = target.slice(SCHEMAS_PREFIX.length);
|
|
59
82
|
if (!relative) {
|
|
60
83
|
throw new Error(`Invalid gambit schema specifier: ${target}`);
|
|
61
84
|
}
|
|
85
|
+
if (relative.endsWith(".ts") && !relative.endsWith(".zod.ts")) {
|
|
86
|
+
if (!LEGACY_SCHEMA_WARNINGS.has(target)) {
|
|
87
|
+
LEGACY_SCHEMA_WARNINGS.add(target);
|
|
88
|
+
logger.warn(`[gambit] "${target}" is deprecated; use .zod.ts schema URIs instead.`);
|
|
89
|
+
}
|
|
90
|
+
relative = `${relative.slice(0, -3)}.zod.ts`;
|
|
91
|
+
}
|
|
62
92
|
return resolveFromBase(SCHEMAS_BASE_URL, relative);
|
|
63
93
|
}
|
|
94
|
+
function resolveBuiltinDeckPath(target) {
|
|
95
|
+
if (!target.startsWith(DECKS_PREFIX))
|
|
96
|
+
return undefined;
|
|
97
|
+
let relative = target.slice(DECKS_PREFIX.length);
|
|
98
|
+
if (!relative) {
|
|
99
|
+
throw new Error(`Invalid gambit deck specifier: ${target}`);
|
|
100
|
+
}
|
|
101
|
+
if (!relative.endsWith("/PROMPT.md")) {
|
|
102
|
+
if (!LEGACY_DECK_WARNINGS.has(target)) {
|
|
103
|
+
LEGACY_DECK_WARNINGS.add(target);
|
|
104
|
+
logger.warn(`[gambit] "${target}" is deprecated; use gambit://decks/.../PROMPT.md instead.`);
|
|
105
|
+
}
|
|
106
|
+
relative = `${relative.replace(/\/?$/, "/")}PROMPT.md`;
|
|
107
|
+
}
|
|
108
|
+
return resolveFromBase(DECKS_BASE_URL, relative);
|
|
109
|
+
}
|
|
@@ -6,6 +6,10 @@ export declare const DEFAULT_GUARDRAILS: {
|
|
|
6
6
|
export declare const RESERVED_TOOL_PREFIX = "gambit_";
|
|
7
7
|
export declare const TOOL_NAME_PATTERN: RegExp;
|
|
8
8
|
export declare const MAX_TOOL_NAME_LENGTH = 64;
|
|
9
|
+
export declare const GAMBIT_TOOL_CONTEXT = "gambit_context";
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Use GAMBIT_TOOL_CONTEXT instead.
|
|
12
|
+
*/
|
|
9
13
|
export declare const GAMBIT_TOOL_INIT = "gambit_init";
|
|
10
14
|
export declare const GAMBIT_TOOL_RESPOND = "gambit_respond";
|
|
11
15
|
export declare const GAMBIT_TOOL_COMPLETE = "gambit_complete";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAMpD,CAAC;AAGH,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
|
package/script/src/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_STATUS_DELAY_MS = exports.BUILTIN_TOOL_NAME_SET = exports.GAMBIT_TOOL_END = exports.GAMBIT_TOOL_COMPLETE = exports.GAMBIT_TOOL_RESPOND = exports.GAMBIT_TOOL_INIT = exports.MAX_TOOL_NAME_LENGTH = exports.TOOL_NAME_PATTERN = exports.RESERVED_TOOL_PREFIX = exports.DEFAULT_GUARDRAILS = void 0;
|
|
3
|
+
exports.DEFAULT_STATUS_DELAY_MS = exports.BUILTIN_TOOL_NAME_SET = exports.GAMBIT_TOOL_END = exports.GAMBIT_TOOL_COMPLETE = exports.GAMBIT_TOOL_RESPOND = exports.GAMBIT_TOOL_INIT = exports.GAMBIT_TOOL_CONTEXT = exports.MAX_TOOL_NAME_LENGTH = exports.TOOL_NAME_PATTERN = exports.RESERVED_TOOL_PREFIX = exports.DEFAULT_GUARDRAILS = void 0;
|
|
4
4
|
exports.DEFAULT_GUARDRAILS = {
|
|
5
5
|
maxDepth: 3,
|
|
6
6
|
maxPasses: 10,
|
|
@@ -9,11 +9,16 @@ exports.DEFAULT_GUARDRAILS = {
|
|
|
9
9
|
exports.RESERVED_TOOL_PREFIX = "gambit_";
|
|
10
10
|
exports.TOOL_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
11
11
|
exports.MAX_TOOL_NAME_LENGTH = 64;
|
|
12
|
+
exports.GAMBIT_TOOL_CONTEXT = "gambit_context";
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use GAMBIT_TOOL_CONTEXT instead.
|
|
15
|
+
*/
|
|
12
16
|
exports.GAMBIT_TOOL_INIT = "gambit_init";
|
|
13
17
|
exports.GAMBIT_TOOL_RESPOND = "gambit_respond";
|
|
14
18
|
exports.GAMBIT_TOOL_COMPLETE = "gambit_complete";
|
|
15
19
|
exports.GAMBIT_TOOL_END = "gambit_end";
|
|
16
20
|
exports.BUILTIN_TOOL_NAME_SET = new Set([
|
|
21
|
+
exports.GAMBIT_TOOL_CONTEXT,
|
|
17
22
|
exports.GAMBIT_TOOL_INIT,
|
|
18
23
|
exports.GAMBIT_TOOL_RESPOND,
|
|
19
24
|
exports.GAMBIT_TOOL_COMPLETE,
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { CardDefinition, DeckDefinition } from "./types.js";
|
|
2
2
|
import type { z } from "zod";
|
|
3
|
-
export declare function defineDeck<InputSchema extends z.ZodTypeAny, OutputSchema extends z.ZodTypeAny | undefined = undefined>(def: Omit<DeckDefinition<z.infer<InputSchema>>, "kind" | "inputSchema" | "outputSchema"> & {
|
|
3
|
+
export declare function defineDeck<InputSchema extends z.ZodTypeAny, OutputSchema extends z.ZodTypeAny | undefined = undefined>(def: Omit<DeckDefinition<z.infer<InputSchema>>, "kind" | "contextSchema" | "responseSchema" | "inputSchema" | "outputSchema"> & {
|
|
4
|
+
contextSchema: InputSchema;
|
|
5
|
+
responseSchema?: OutputSchema;
|
|
6
|
+
}): DeckDefinition<z.infer<InputSchema>>;
|
|
7
|
+
export declare function defineDeck<InputSchema extends z.ZodTypeAny, OutputSchema extends z.ZodTypeAny | undefined = undefined>(def: Omit<DeckDefinition<z.infer<InputSchema>>, "kind" | "contextSchema" | "responseSchema" | "inputSchema" | "outputSchema"> & {
|
|
4
8
|
inputSchema: InputSchema;
|
|
5
9
|
outputSchema?: OutputSchema;
|
|
6
10
|
}): DeckDefinition<z.infer<InputSchema>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/src/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAgB,UAAU,CACxB,WAAW,SAAS,CAAC,CAAC,UAAU,EAChC,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAEzD,GAAG,EACC,IAAI,CACJ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/src/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAgB,UAAU,CACxB,WAAW,SAAS,CAAC,CAAC,UAAU,EAChC,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAEzD,GAAG,EACC,IAAI,CACJ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAClC,MAAM,GACN,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,cAAc,CACjB,GACC;IACA,aAAa,EAAE,WAAW,CAAC;IAC3B,cAAc,CAAC,EAAE,YAAY,CAAC;CAC/B,GACF,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,wBAAgB,UAAU,CACxB,WAAW,SAAS,CAAC,CAAC,UAAU,EAChC,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAEzD,GAAG,EACC,IAAI,CACJ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAClC,MAAM,GACN,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,cAAc,CACjB,GACC;IACA,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GACF,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAChC,cAAc,CAAC;AAOlB,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,cAAc,CAE5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/src/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/src/loader.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAMV,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAiPpB,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,KAAK,CAAC,MAAM,CAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAQrB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CA4JrB"}
|
package/script/src/loader.js
CHANGED
|
@@ -35,13 +35,63 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.loadCard = loadCard;
|
|
37
37
|
exports.loadDeck = loadDeck;
|
|
38
|
+
const dntShim = __importStar(require("../_dnt.shims.js"));
|
|
38
39
|
const path = __importStar(require("../deps/jsr.io/@std/path/1.1.4/mod.js"));
|
|
39
40
|
const constants_js_1 = require("./constants.js");
|
|
40
41
|
const definitions_js_1 = require("./definitions.js");
|
|
42
|
+
const permissions_js_1 = require("./permissions.js");
|
|
41
43
|
const schema_js_1 = require("./schema.js");
|
|
42
44
|
const markdown_js_1 = require("./markdown.js");
|
|
43
45
|
const builtins_js_1 = require("./builtins.js");
|
|
44
46
|
const logger = console;
|
|
47
|
+
const LEGACY_SCHEMA_WARNINGS = new Set();
|
|
48
|
+
const LEGACY_FRAGMENT_WARNINGS = new Set();
|
|
49
|
+
function warnLegacySchema(resolvedPath, legacy, replacement) {
|
|
50
|
+
const key = `${resolvedPath}:${legacy}`;
|
|
51
|
+
if (LEGACY_SCHEMA_WARNINGS.has(key))
|
|
52
|
+
return;
|
|
53
|
+
LEGACY_SCHEMA_WARNINGS.add(key);
|
|
54
|
+
logger.warn(`[gambit] deck at ${resolvedPath} uses deprecated "${legacy}"; rename to "${replacement}"`);
|
|
55
|
+
}
|
|
56
|
+
function warnLegacyFragment(resolvedPath, legacy, replacement) {
|
|
57
|
+
const key = `${resolvedPath}:${legacy}`;
|
|
58
|
+
if (LEGACY_FRAGMENT_WARNINGS.has(key))
|
|
59
|
+
return;
|
|
60
|
+
LEGACY_FRAGMENT_WARNINGS.add(key);
|
|
61
|
+
logger.warn(`[gambit] card at ${resolvedPath} uses deprecated "${legacy}"; rename to "${replacement}"`);
|
|
62
|
+
}
|
|
63
|
+
function normalizeDeckSchemas(deck, resolvedPath) {
|
|
64
|
+
if (deck.inputSchema !== undefined) {
|
|
65
|
+
warnLegacySchema(resolvedPath, "inputSchema", "contextSchema");
|
|
66
|
+
}
|
|
67
|
+
if (deck.outputSchema !== undefined) {
|
|
68
|
+
warnLegacySchema(resolvedPath, "outputSchema", "responseSchema");
|
|
69
|
+
}
|
|
70
|
+
const contextSchema = deck.contextSchema ?? deck.inputSchema;
|
|
71
|
+
const responseSchema = deck.responseSchema ?? deck.outputSchema;
|
|
72
|
+
return {
|
|
73
|
+
contextSchema,
|
|
74
|
+
responseSchema,
|
|
75
|
+
inputSchema: contextSchema,
|
|
76
|
+
outputSchema: responseSchema,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function normalizeCardFragments(card, resolvedPath) {
|
|
80
|
+
if (card.inputFragment !== undefined) {
|
|
81
|
+
warnLegacyFragment(resolvedPath, "inputFragment", "contextFragment");
|
|
82
|
+
}
|
|
83
|
+
if (card.outputFragment !== undefined) {
|
|
84
|
+
warnLegacyFragment(resolvedPath, "outputFragment", "responseFragment");
|
|
85
|
+
}
|
|
86
|
+
const contextFragment = card.contextFragment ?? card.inputFragment;
|
|
87
|
+
const responseFragment = card.responseFragment ?? card.outputFragment;
|
|
88
|
+
return {
|
|
89
|
+
contextFragment,
|
|
90
|
+
responseFragment,
|
|
91
|
+
inputFragment: contextFragment,
|
|
92
|
+
outputFragment: responseFragment,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
45
95
|
function toFileUrl(p) {
|
|
46
96
|
const abs = path.resolve(p);
|
|
47
97
|
return path.toFileUrl(abs).href;
|
|
@@ -51,7 +101,10 @@ function normalizeActionDecks(actions, basePath) {
|
|
|
51
101
|
return [];
|
|
52
102
|
return actions.map((a) => ({
|
|
53
103
|
...a,
|
|
54
|
-
path:
|
|
104
|
+
path: a.path.startsWith("gambit://") || !basePath
|
|
105
|
+
? a.path
|
|
106
|
+
: path.resolve(path.dirname(basePath), a.path),
|
|
107
|
+
permissions: (0, permissions_js_1.normalizePermissionDeclaration)(a.permissions, basePath ? path.dirname(basePath) : dntShim.Deno.cwd()),
|
|
55
108
|
}));
|
|
56
109
|
}
|
|
57
110
|
function normalizeCompanionDecks(decks, basePath) {
|
|
@@ -59,9 +112,10 @@ function normalizeCompanionDecks(decks, basePath) {
|
|
|
59
112
|
return [];
|
|
60
113
|
return decks.map((deck) => ({
|
|
61
114
|
...deck,
|
|
62
|
-
path: basePath
|
|
63
|
-
?
|
|
64
|
-
: deck.path,
|
|
115
|
+
path: deck.path.startsWith("gambit://") || !basePath
|
|
116
|
+
? deck.path
|
|
117
|
+
: path.resolve(path.dirname(basePath), deck.path),
|
|
118
|
+
permissions: (0, permissions_js_1.normalizePermissionDeclaration)(deck.permissions, basePath ? path.dirname(basePath) : dntShim.Deno.cwd()),
|
|
65
119
|
}));
|
|
66
120
|
}
|
|
67
121
|
function checkReserved(action) {
|
|
@@ -74,6 +128,30 @@ function checkReserved(action) {
|
|
|
74
128
|
throw new Error(`Action name ${action.name} must match ${constants_js_1.TOOL_NAME_PATTERN} and be <= ${constants_js_1.MAX_TOOL_NAME_LENGTH} characters`);
|
|
75
129
|
}
|
|
76
130
|
}
|
|
131
|
+
function normalizeExternalTools(tools, resolvedPath) {
|
|
132
|
+
if (!tools)
|
|
133
|
+
return [];
|
|
134
|
+
return tools.map((tool) => {
|
|
135
|
+
const name = String(tool.name ?? "").trim();
|
|
136
|
+
if (!name) {
|
|
137
|
+
throw new Error(`External tool must include a name (${resolvedPath})`);
|
|
138
|
+
}
|
|
139
|
+
if (name.startsWith(constants_js_1.RESERVED_TOOL_PREFIX)) {
|
|
140
|
+
throw new Error(`External tool name ${name} is reserved (prefix ${constants_js_1.RESERVED_TOOL_PREFIX})`);
|
|
141
|
+
}
|
|
142
|
+
if (!constants_js_1.TOOL_NAME_PATTERN.test(name) ||
|
|
143
|
+
name.length > constants_js_1.MAX_TOOL_NAME_LENGTH) {
|
|
144
|
+
throw new Error(`External tool name ${name} must match ${constants_js_1.TOOL_NAME_PATTERN} and be <= ${constants_js_1.MAX_TOOL_NAME_LENGTH} characters`);
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
name,
|
|
148
|
+
description: typeof tool.description === "string"
|
|
149
|
+
? tool.description
|
|
150
|
+
: undefined,
|
|
151
|
+
inputSchema: tool.inputSchema,
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
}
|
|
77
155
|
async function loadCardInternal(cardPath, parentPath, stack = []) {
|
|
78
156
|
const resolved = parentPath
|
|
79
157
|
? path.resolve(path.dirname(parentPath), cardPath)
|
|
@@ -98,6 +176,7 @@ async function loadCardInternal(cardPath, parentPath, stack = []) {
|
|
|
98
176
|
const graderDecks = normalizeCompanionDecks(card.graderDecks, resolved);
|
|
99
177
|
actionDecks.forEach(checkReserved);
|
|
100
178
|
const { label: _l, ...rest } = card;
|
|
179
|
+
const fragments = normalizeCardFragments(card, resolved);
|
|
101
180
|
return {
|
|
102
181
|
...rest,
|
|
103
182
|
label: cardLabel,
|
|
@@ -107,28 +186,37 @@ async function loadCardInternal(cardPath, parentPath, stack = []) {
|
|
|
107
186
|
graderDecks,
|
|
108
187
|
path: resolved,
|
|
109
188
|
cards: [],
|
|
189
|
+
...fragments,
|
|
190
|
+
permissions: (0, permissions_js_1.normalizePermissionDeclaration)(card.permissions, path.dirname(resolved)),
|
|
110
191
|
};
|
|
111
192
|
}
|
|
112
193
|
async function loadCard(cardPath, parentPath, stack = []) {
|
|
113
194
|
const builtinPath = (0, builtins_js_1.resolveBuiltinCardPath)(cardPath);
|
|
114
|
-
const
|
|
195
|
+
const snippetPath = (0, builtins_js_1.resolveBuiltinSnippetPath)(cardPath);
|
|
196
|
+
const normalizedPath = snippetPath ?? builtinPath ?? cardPath;
|
|
115
197
|
if ((0, markdown_js_1.isMarkdownFile)(normalizedPath)) {
|
|
116
198
|
return await (0, markdown_js_1.loadMarkdownCard)(normalizedPath, parentPath, stack);
|
|
117
199
|
}
|
|
118
200
|
return await loadCardInternal(normalizedPath, parentPath, stack);
|
|
119
201
|
}
|
|
120
202
|
async function loadDeck(deckPath, parentPath) {
|
|
121
|
-
|
|
122
|
-
|
|
203
|
+
const builtinDeck = (0, builtins_js_1.resolveBuiltinDeckPath)(deckPath);
|
|
204
|
+
const normalizedDeckPath = builtinDeck ?? deckPath;
|
|
205
|
+
const markdownParent = builtinDeck ? undefined : parentPath;
|
|
206
|
+
if ((0, markdown_js_1.isMarkdownFile)(normalizedDeckPath)) {
|
|
207
|
+
return await (0, markdown_js_1.loadMarkdownDeck)(normalizedDeckPath, markdownParent);
|
|
123
208
|
}
|
|
124
|
-
const resolved =
|
|
125
|
-
? path.resolve(path.dirname(
|
|
126
|
-
: path.resolve(
|
|
209
|
+
const resolved = markdownParent
|
|
210
|
+
? path.resolve(path.dirname(markdownParent), normalizedDeckPath)
|
|
211
|
+
: path.resolve(normalizedDeckPath);
|
|
127
212
|
const mod = await Promise.resolve(`${toFileUrl(resolved)}`).then(s => __importStar(require(s)));
|
|
128
213
|
const deck = mod.default;
|
|
129
214
|
if (!(0, definitions_js_1.isDeckDefinition)(deck)) {
|
|
130
215
|
throw new Error(`Deck at ${resolved} did not export a valid deck definition`);
|
|
131
216
|
}
|
|
217
|
+
if (deck.mcpServers !== undefined) {
|
|
218
|
+
throw new Error(`Deck-level [[mcpServers]] is unsupported in this phase (${resolved})`);
|
|
219
|
+
}
|
|
132
220
|
const deckLabel = deck.label;
|
|
133
221
|
const cards = [];
|
|
134
222
|
const mergedActions = {};
|
|
@@ -148,12 +236,26 @@ async function loadDeck(deckPath, parentPath) {
|
|
|
148
236
|
mergedActions[action.name] = action;
|
|
149
237
|
}
|
|
150
238
|
const actionDecks = Object.values(mergedActions);
|
|
151
|
-
|
|
152
|
-
|
|
239
|
+
const tools = normalizeExternalTools(deck.tools, resolved);
|
|
240
|
+
const actionNames = new Set(actionDecks.map((action) => action.name));
|
|
241
|
+
for (const tool of tools) {
|
|
242
|
+
if (actionNames.has(tool.name)) {
|
|
243
|
+
logger.warn(`[gambit] tool ${tool.name} is shadowed by an action in ${resolved}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const schemaAliases = normalizeDeckSchemas(deck, resolved);
|
|
247
|
+
let inputSchema = schemaAliases.inputSchema;
|
|
248
|
+
let outputSchema = schemaAliases.outputSchema;
|
|
249
|
+
let contextSchema = schemaAliases.contextSchema;
|
|
250
|
+
let responseSchema = schemaAliases.responseSchema;
|
|
153
251
|
for (const card of allCards) {
|
|
154
252
|
inputSchema = (0, schema_js_1.mergeZodObjects)(inputSchema, card.inputFragment);
|
|
155
253
|
outputSchema = (0, schema_js_1.mergeZodObjects)(outputSchema, card.outputFragment);
|
|
254
|
+
contextSchema = (0, schema_js_1.mergeZodObjects)(contextSchema, card.contextFragment);
|
|
255
|
+
responseSchema = (0, schema_js_1.mergeZodObjects)(responseSchema, card.responseFragment);
|
|
156
256
|
}
|
|
257
|
+
inputSchema = contextSchema;
|
|
258
|
+
outputSchema = responseSchema;
|
|
157
259
|
const executor = typeof deck.run === "function"
|
|
158
260
|
? deck.run
|
|
159
261
|
: typeof deck.execute === "function"
|
|
@@ -200,11 +302,15 @@ async function loadDeck(deckPath, parentPath) {
|
|
|
200
302
|
actions: actionDecks,
|
|
201
303
|
testDecks: normalizeCompanionDecks(deck.testDecks, resolved),
|
|
202
304
|
graderDecks: normalizeCompanionDecks(deck.graderDecks, resolved),
|
|
305
|
+
tools,
|
|
306
|
+
contextSchema,
|
|
307
|
+
responseSchema,
|
|
203
308
|
inputSchema,
|
|
204
309
|
outputSchema,
|
|
205
310
|
executor,
|
|
206
311
|
handlers,
|
|
207
312
|
respond: deck.respond,
|
|
313
|
+
permissions: (0, permissions_js_1.normalizePermissionDeclaration)(deck.permissions, path.dirname(resolved)),
|
|
208
314
|
};
|
|
209
315
|
}
|
|
210
316
|
function flattenCards(cards) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/src/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/src/markdown.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAKV,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAuVpB,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,KAAK,CAAC,MAAM,CAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAsGrB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CAqPrB;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
|