@tagma/sdk 0.7.3 → 0.7.5
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 +85 -57
- package/dist/approval.d.ts +2 -12
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +1 -90
- package/dist/approval.js.map +1 -1
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/completions/file-exists.js +1 -1
- package/dist/completions/file-exists.js.map +1 -1
- package/dist/completions/output-check.d.ts.map +1 -1
- package/dist/completions/output-check.js +17 -4
- package/dist/completions/output-check.js.map +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/dataflow.d.ts +3 -0
- package/dist/dataflow.d.ts.map +1 -0
- package/dist/dataflow.js +2 -0
- package/dist/dataflow.js.map +1 -0
- package/dist/drivers/opencode.d.ts.map +1 -1
- package/dist/drivers/opencode.js +23 -71
- package/dist/drivers/opencode.js.map +1 -1
- package/dist/engine.d.ts +5 -56
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +7 -297
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +2 -60
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +1 -153
- package/dist/logger.js.map +1 -1
- package/dist/middlewares/static-context.d.ts.map +1 -1
- package/dist/middlewares/static-context.js +1 -2
- package/dist/middlewares/static-context.js.map +1 -1
- package/dist/pipeline-runner.d.ts.map +1 -1
- package/dist/pipeline-runner.js +2 -2
- package/dist/pipeline-runner.js.map +1 -1
- package/dist/plugins.d.ts +2 -2
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +1 -1
- package/dist/plugins.js.map +1 -1
- package/dist/runner.d.ts +1 -35
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +1 -610
- package/dist/runner.js.map +1 -1
- package/dist/runtime/adapters/stdin-approval.d.ts +2 -0
- package/dist/runtime/adapters/stdin-approval.d.ts.map +1 -0
- package/dist/runtime/adapters/stdin-approval.js +2 -0
- package/dist/runtime/adapters/stdin-approval.js.map +1 -0
- package/dist/runtime/adapters/websocket-approval.d.ts +2 -0
- package/dist/runtime/adapters/websocket-approval.d.ts.map +1 -0
- package/dist/runtime/adapters/websocket-approval.js +2 -0
- package/dist/runtime/adapters/websocket-approval.js.map +1 -0
- package/dist/runtime/bun-process-runner.d.ts +2 -0
- package/dist/runtime/bun-process-runner.d.ts.map +1 -0
- package/dist/runtime/bun-process-runner.js +2 -0
- package/dist/runtime/bun-process-runner.js.map +1 -0
- package/dist/runtime.d.ts +2 -8
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +1 -7
- package/dist/runtime.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +3 -4
- package/dist/schema.js.map +1 -1
- package/dist/tagma.d.ts +3 -4
- package/dist/tagma.d.ts.map +1 -1
- package/dist/tagma.js +2 -3
- package/dist/tagma.js.map +1 -1
- package/dist/triggers/file.d.ts.map +1 -1
- package/dist/triggers/file.js +74 -108
- package/dist/triggers/file.js.map +1 -1
- package/dist/triggers/manual.d.ts.map +1 -1
- package/dist/triggers/manual.js +1 -2
- package/dist/triggers/manual.js.map +1 -1
- package/dist/types.d.ts +1 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -12
- package/dist/types.js.map +1 -1
- package/dist/utils-api.d.ts +1 -1
- package/dist/utils-api.d.ts.map +1 -1
- package/dist/utils-api.js +1 -1
- package/dist/utils-api.js.map +1 -1
- package/dist/validate-raw.d.ts.map +1 -1
- package/dist/validate-raw.js +5 -12
- package/dist/validate-raw.js.map +1 -1
- package/package.json +20 -22
- package/dist/adapters/stdin-approval.d.ts +0 -6
- package/dist/adapters/stdin-approval.d.ts.map +0 -1
- package/dist/adapters/stdin-approval.js +0 -90
- package/dist/adapters/stdin-approval.js.map +0 -1
- package/dist/adapters/websocket-approval.d.ts +0 -28
- package/dist/adapters/websocket-approval.d.ts.map +0 -1
- package/dist/adapters/websocket-approval.js +0 -147
- package/dist/adapters/websocket-approval.js.map +0 -1
- package/dist/core/dataflow.d.ts +0 -23
- package/dist/core/dataflow.d.ts.map +0 -1
- package/dist/core/dataflow.js +0 -99
- package/dist/core/dataflow.js.map +0 -1
- package/dist/core/log-prune.d.ts +0 -16
- package/dist/core/log-prune.d.ts.map +0 -1
- package/dist/core/log-prune.js +0 -34
- package/dist/core/log-prune.js.map +0 -1
- package/dist/core/preflight.d.ts +0 -13
- package/dist/core/preflight.d.ts.map +0 -1
- package/dist/core/preflight.js +0 -61
- package/dist/core/preflight.js.map +0 -1
- package/dist/core/run-context.d.ts +0 -55
- package/dist/core/run-context.d.ts.map +0 -1
- package/dist/core/run-context.js +0 -158
- package/dist/core/run-context.js.map +0 -1
- package/dist/core/run-state.d.ts +0 -25
- package/dist/core/run-state.d.ts.map +0 -1
- package/dist/core/run-state.js +0 -93
- package/dist/core/run-state.js.map +0 -1
- package/dist/core/scheduler.d.ts +0 -13
- package/dist/core/scheduler.d.ts.map +0 -1
- package/dist/core/scheduler.js +0 -35
- package/dist/core/scheduler.js.map +0 -1
- package/dist/core/task-executor.d.ts +0 -13
- package/dist/core/task-executor.d.ts.map +0 -1
- package/dist/core/task-executor.js +0 -601
- package/dist/core/task-executor.js.map +0 -1
- package/dist/core/trigger-errors.d.ts +0 -9
- package/dist/core/trigger-errors.d.ts.map +0 -1
- package/dist/core/trigger-errors.js +0 -15
- package/dist/core/trigger-errors.js.map +0 -1
- package/dist/dag.d.ts +0 -45
- package/dist/dag.d.ts.map +0 -1
- package/dist/dag.js +0 -177
- package/dist/dag.js.map +0 -1
- package/dist/hooks.d.ts +0 -73
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js +0 -106
- package/dist/hooks.js.map +0 -1
- package/dist/pipeline-definition.d.ts +0 -3
- package/dist/pipeline-definition.d.ts.map +0 -1
- package/dist/pipeline-definition.js +0 -4
- package/dist/pipeline-definition.js.map +0 -1
- package/dist/ports.d.ts +0 -196
- package/dist/ports.d.ts.map +0 -1
- package/dist/ports.js +0 -688
- package/dist/ports.js.map +0 -1
- package/dist/prompt-doc.d.ts +0 -70
- package/dist/prompt-doc.d.ts.map +0 -1
- package/dist/prompt-doc.js +0 -154
- package/dist/prompt-doc.js.map +0 -1
- package/dist/registry.d.ts +0 -67
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -293
- package/dist/registry.js.map +0 -1
- package/dist/task-ref.d.ts +0 -55
- package/dist/task-ref.d.ts.map +0 -1
- package/dist/task-ref.js +0 -103
- package/dist/task-ref.js.map +0 -1
- package/dist/utils.d.ts +0 -13
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -177
- package/dist/utils.js.map +0 -1
- package/src/adapters/stdin-approval.ts +0 -106
- package/src/adapters/websocket-approval.ts +0 -224
- package/src/approval.ts +0 -131
- package/src/bootstrap.ts +0 -55
- package/src/completions/exit-code.ts +0 -34
- package/src/completions/file-exists.ts +0 -66
- package/src/completions/output-check.test.ts +0 -50
- package/src/completions/output-check.ts +0 -92
- package/src/config-ops.test.ts +0 -70
- package/src/config-ops.ts +0 -328
- package/src/config.ts +0 -26
- package/src/core/dataflow.test.ts +0 -166
- package/src/core/dataflow.ts +0 -161
- package/src/core/log-prune.test.ts +0 -58
- package/src/core/log-prune.ts +0 -43
- package/src/core/preflight.test.ts +0 -49
- package/src/core/preflight.ts +0 -89
- package/src/core/run-context.test.ts +0 -256
- package/src/core/run-context.ts +0 -211
- package/src/core/run-state.test.ts +0 -98
- package/src/core/run-state.ts +0 -122
- package/src/core/scheduler.test.ts +0 -83
- package/src/core/scheduler.ts +0 -42
- package/src/core/task-executor.ts +0 -743
- package/src/core/trigger-errors.ts +0 -15
- package/src/dag.test.ts +0 -56
- package/src/dag.ts +0 -245
- package/src/drivers/opencode.ts +0 -410
- package/src/engine-ports-mixed.test.ts +0 -156
- package/src/engine-ports.test.ts +0 -166
- package/src/engine-task-type.test.ts +0 -56
- package/src/engine.ts +0 -458
- package/src/hooks.ts +0 -193
- package/src/index.ts +0 -33
- package/src/logger.ts +0 -182
- package/src/middlewares/static-context.ts +0 -49
- package/src/pipeline-definition.ts +0 -5
- package/src/pipeline-runner.test.ts +0 -91
- package/src/pipeline-runner.ts +0 -194
- package/src/plugin-registry.test.ts +0 -382
- package/src/plugins.ts +0 -21
- package/src/ports.test.ts +0 -678
- package/src/ports.ts +0 -925
- package/src/prompt-doc.test.ts +0 -174
- package/src/prompt-doc.ts +0 -169
- package/src/registry.ts +0 -353
- package/src/runner.test.ts +0 -142
- package/src/runner.ts +0 -666
- package/src/runtime.ts +0 -20
- package/src/schema-ports.test.ts +0 -172
- package/src/schema.test.ts +0 -213
- package/src/schema.ts +0 -379
- package/src/tagma.test.ts +0 -155
- package/src/tagma.ts +0 -62
- package/src/task-ref.test.ts +0 -401
- package/src/task-ref.ts +0 -121
- package/src/triggers/file.ts +0 -164
- package/src/triggers/manual.ts +0 -86
- package/src/types.ts +0 -18
- package/src/utils-api.ts +0 -8
- package/src/utils.test.ts +0 -28
- package/src/utils.ts +0 -203
- package/src/validate-raw-plugin-types.test.ts +0 -60
- package/src/validate-raw-ports.test.ts +0 -136
- package/src/validate-raw.ts +0 -852
- package/src/yaml-compiler.test.ts +0 -108
- package/src/yaml-compiler.ts +0 -110
- package/src/yaml.ts +0 -11
package/dist/ports.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}
|
package/dist/prompt-doc.d.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import type { PortDef, PromptContextBlock, PromptDocument } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Build a fresh `PromptDocument` from a raw task string.
|
|
4
|
-
* Middlewares receive this from the engine and push context blocks onto
|
|
5
|
-
* `contexts`. `task` is the user's original prompt and should not be
|
|
6
|
-
* rewritten by middlewares (translation middlewares are the rare exception).
|
|
7
|
-
*/
|
|
8
|
-
export declare function promptDocumentFromString(task: string): PromptDocument;
|
|
9
|
-
/**
|
|
10
|
-
* Serialize a `PromptDocument` to the default string form consumed by
|
|
11
|
-
* drivers that read `task.prompt` instead of `ctx.promptDoc`.
|
|
12
|
-
*
|
|
13
|
-
* Format:
|
|
14
|
-
*
|
|
15
|
-
* [<label1>]
|
|
16
|
-
* <content1>
|
|
17
|
-
*
|
|
18
|
-
* [<label2>]
|
|
19
|
-
* <content2>
|
|
20
|
-
*
|
|
21
|
-
* <task>
|
|
22
|
-
*
|
|
23
|
-
* Each context block is separated from the next (and from `task`) by a
|
|
24
|
-
* single blank line. No implicit `[Task]` header is emitted — that framing
|
|
25
|
-
* is the driver's responsibility (e.g. opencode's `agent_profile` wrapping).
|
|
26
|
-
* Emitting one here would compose incorrectly with any driver that also
|
|
27
|
-
* adds a `[Task]` header, producing a double header that some models
|
|
28
|
-
* (observed with `opencode/big-pickle`) misread as a cut-off message.
|
|
29
|
-
*/
|
|
30
|
-
export declare function serializePromptDocument(doc: PromptDocument): string;
|
|
31
|
-
/**
|
|
32
|
-
* Helper for middlewares: return a new document with the given block
|
|
33
|
-
* appended to `contexts`, preserving immutability of `doc`.
|
|
34
|
-
*/
|
|
35
|
-
export declare function appendContext(doc: PromptDocument, block: PromptContextBlock): PromptDocument;
|
|
36
|
-
/**
|
|
37
|
-
* Helper: return a new document with the given block PREPENDED. The
|
|
38
|
-
* engine uses this to place port-related context blocks (`[Inputs]`,
|
|
39
|
-
* `[Output Format]`) at the top of the document so middlewares that
|
|
40
|
-
* assemble retrieval context against the task's inputs see them.
|
|
41
|
-
*/
|
|
42
|
-
export declare function prependContext(doc: PromptDocument, block: PromptContextBlock): PromptDocument;
|
|
43
|
-
/**
|
|
44
|
-
* Build an `[Inputs]` context block from a map of resolved port inputs.
|
|
45
|
-
* Each input is rendered on its own line as `name: <value>` with an
|
|
46
|
-
* optional trailing `# <description>` comment so the model has both the
|
|
47
|
-
* value and the reason it matters.
|
|
48
|
-
*
|
|
49
|
-
* The block is *only* useful for AI tasks; command tasks consume inputs
|
|
50
|
-
* through `{{inputs.X}}` substitution in their command line and do not
|
|
51
|
-
* need this context.
|
|
52
|
-
*
|
|
53
|
-
* Returns null when there are no inputs to render — callers can forward
|
|
54
|
-
* that nullish value to `prependContext` via an `if (block)` check so
|
|
55
|
-
* empty-input tasks don't grow a noise block in their prompt.
|
|
56
|
-
*/
|
|
57
|
-
export declare function renderInputsBlock(inputsDecl: readonly PortDef[] | undefined, values: Readonly<Record<string, unknown>>): PromptContextBlock | null;
|
|
58
|
-
/**
|
|
59
|
-
* Build an `[Output Format]` context block from a task's declared output
|
|
60
|
-
* ports. The block instructs the model to emit a final-line JSON object
|
|
61
|
-
* matching the declared schema so `extractTaskOutputs` can pick it up
|
|
62
|
-
* without fragile heuristics. Returns null when the task declares no
|
|
63
|
-
* outputs.
|
|
64
|
-
*
|
|
65
|
-
* The instruction is deliberately short and explicit — a terse "emit
|
|
66
|
-
* this object as JSON on the final line" beats a long schema dump
|
|
67
|
-
* because shorter prompts compose better with downstream middlewares.
|
|
68
|
-
*/
|
|
69
|
-
export declare function renderOutputSchemaBlock(outputsDecl: readonly PortDef[] | undefined): PromptContextBlock | null;
|
|
70
|
-
//# sourceMappingURL=prompt-doc.d.ts.map
|
package/dist/prompt-doc.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-doc.d.ts","sourceRoot":"","sources":["../src/prompt-doc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAErE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAInE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,kBAAkB,GACxB,cAAc,CAEhB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,kBAAkB,GACxB,cAAc,CAEhB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,EAC1C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,kBAAkB,GAAG,IAAI,CAY3B;AAaD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,GAC1C,kBAAkB,GAAG,IAAI,CAsB3B"}
|
package/dist/prompt-doc.js
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Build a fresh `PromptDocument` from a raw task string.
|
|
3
|
-
* Middlewares receive this from the engine and push context blocks onto
|
|
4
|
-
* `contexts`. `task` is the user's original prompt and should not be
|
|
5
|
-
* rewritten by middlewares (translation middlewares are the rare exception).
|
|
6
|
-
*/
|
|
7
|
-
export function promptDocumentFromString(task) {
|
|
8
|
-
return { contexts: [], task };
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Serialize a `PromptDocument` to the default string form consumed by
|
|
12
|
-
* drivers that read `task.prompt` instead of `ctx.promptDoc`.
|
|
13
|
-
*
|
|
14
|
-
* Format:
|
|
15
|
-
*
|
|
16
|
-
* [<label1>]
|
|
17
|
-
* <content1>
|
|
18
|
-
*
|
|
19
|
-
* [<label2>]
|
|
20
|
-
* <content2>
|
|
21
|
-
*
|
|
22
|
-
* <task>
|
|
23
|
-
*
|
|
24
|
-
* Each context block is separated from the next (and from `task`) by a
|
|
25
|
-
* single blank line. No implicit `[Task]` header is emitted — that framing
|
|
26
|
-
* is the driver's responsibility (e.g. opencode's `agent_profile` wrapping).
|
|
27
|
-
* Emitting one here would compose incorrectly with any driver that also
|
|
28
|
-
* adds a `[Task]` header, producing a double header that some models
|
|
29
|
-
* (observed with `opencode/big-pickle`) misread as a cut-off message.
|
|
30
|
-
*/
|
|
31
|
-
export function serializePromptDocument(doc) {
|
|
32
|
-
if (doc.contexts.length === 0)
|
|
33
|
-
return doc.task;
|
|
34
|
-
const blocks = doc.contexts.map((c) => `[${c.label}]\n${c.content}`);
|
|
35
|
-
return `${blocks.join('\n\n')}\n\n${doc.task}`;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Helper for middlewares: return a new document with the given block
|
|
39
|
-
* appended to `contexts`, preserving immutability of `doc`.
|
|
40
|
-
*/
|
|
41
|
-
export function appendContext(doc, block) {
|
|
42
|
-
return { contexts: [...doc.contexts, block], task: doc.task };
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Helper: return a new document with the given block PREPENDED. The
|
|
46
|
-
* engine uses this to place port-related context blocks (`[Inputs]`,
|
|
47
|
-
* `[Output Format]`) at the top of the document so middlewares that
|
|
48
|
-
* assemble retrieval context against the task's inputs see them.
|
|
49
|
-
*/
|
|
50
|
-
export function prependContext(doc, block) {
|
|
51
|
-
return { contexts: [block, ...doc.contexts], task: doc.task };
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Build an `[Inputs]` context block from a map of resolved port inputs.
|
|
55
|
-
* Each input is rendered on its own line as `name: <value>` with an
|
|
56
|
-
* optional trailing `# <description>` comment so the model has both the
|
|
57
|
-
* value and the reason it matters.
|
|
58
|
-
*
|
|
59
|
-
* The block is *only* useful for AI tasks; command tasks consume inputs
|
|
60
|
-
* through `{{inputs.X}}` substitution in their command line and do not
|
|
61
|
-
* need this context.
|
|
62
|
-
*
|
|
63
|
-
* Returns null when there are no inputs to render — callers can forward
|
|
64
|
-
* that nullish value to `prependContext` via an `if (block)` check so
|
|
65
|
-
* empty-input tasks don't grow a noise block in their prompt.
|
|
66
|
-
*/
|
|
67
|
-
export function renderInputsBlock(inputsDecl, values) {
|
|
68
|
-
if (!inputsDecl || inputsDecl.length === 0)
|
|
69
|
-
return null;
|
|
70
|
-
const lines = [];
|
|
71
|
-
for (const port of inputsDecl) {
|
|
72
|
-
if (!(port.name in values))
|
|
73
|
-
continue;
|
|
74
|
-
const raw = values[port.name];
|
|
75
|
-
const rendered = renderInputValue(raw);
|
|
76
|
-
const descr = port.description?.trim();
|
|
77
|
-
lines.push(descr ? `${port.name}: ${rendered} # ${descr}` : `${port.name}: ${rendered}`);
|
|
78
|
-
}
|
|
79
|
-
if (lines.length === 0)
|
|
80
|
-
return null;
|
|
81
|
-
return { label: 'Inputs', content: lines.join('\n') };
|
|
82
|
-
}
|
|
83
|
-
function renderInputValue(value) {
|
|
84
|
-
if (value === null || value === undefined)
|
|
85
|
-
return '';
|
|
86
|
-
if (typeof value === 'string')
|
|
87
|
-
return JSON.stringify(value);
|
|
88
|
-
if (typeof value === 'number' || typeof value === 'boolean')
|
|
89
|
-
return String(value);
|
|
90
|
-
try {
|
|
91
|
-
return JSON.stringify(value);
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
return String(value);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Build an `[Output Format]` context block from a task's declared output
|
|
99
|
-
* ports. The block instructs the model to emit a final-line JSON object
|
|
100
|
-
* matching the declared schema so `extractTaskOutputs` can pick it up
|
|
101
|
-
* without fragile heuristics. Returns null when the task declares no
|
|
102
|
-
* outputs.
|
|
103
|
-
*
|
|
104
|
-
* The instruction is deliberately short and explicit — a terse "emit
|
|
105
|
-
* this object as JSON on the final line" beats a long schema dump
|
|
106
|
-
* because shorter prompts compose better with downstream middlewares.
|
|
107
|
-
*/
|
|
108
|
-
export function renderOutputSchemaBlock(outputsDecl) {
|
|
109
|
-
if (!outputsDecl || outputsDecl.length === 0)
|
|
110
|
-
return null;
|
|
111
|
-
const lines = [];
|
|
112
|
-
lines.push('After your response, emit a single JSON object on the FINAL line with these keys:');
|
|
113
|
-
for (const port of outputsDecl) {
|
|
114
|
-
const descr = port.description?.trim();
|
|
115
|
-
const enumHint = port.type === 'enum' && port.enum?.length
|
|
116
|
-
? ` (one of: ${port.enum.map((v) => JSON.stringify(v)).join(', ')})`
|
|
117
|
-
: '';
|
|
118
|
-
lines.push(descr
|
|
119
|
-
? ` - ${port.name} (${port.type}${enumHint}): ${descr}`
|
|
120
|
-
: ` - ${port.name} (${port.type}${enumHint})`);
|
|
121
|
-
}
|
|
122
|
-
const example = buildExampleObject(outputsDecl);
|
|
123
|
-
lines.push('');
|
|
124
|
-
lines.push(`Example final line: ${JSON.stringify(example)}`);
|
|
125
|
-
return { label: 'Output Format', content: lines.join('\n') };
|
|
126
|
-
}
|
|
127
|
-
function buildExampleObject(outputsDecl) {
|
|
128
|
-
const example = {};
|
|
129
|
-
for (const port of outputsDecl) {
|
|
130
|
-
if (port.default !== undefined) {
|
|
131
|
-
example[port.name] = port.default;
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
switch (port.type) {
|
|
135
|
-
case 'string':
|
|
136
|
-
example[port.name] = '...';
|
|
137
|
-
break;
|
|
138
|
-
case 'number':
|
|
139
|
-
example[port.name] = 0;
|
|
140
|
-
break;
|
|
141
|
-
case 'boolean':
|
|
142
|
-
example[port.name] = false;
|
|
143
|
-
break;
|
|
144
|
-
case 'enum':
|
|
145
|
-
example[port.name] = port.enum?.[0] ?? '...';
|
|
146
|
-
break;
|
|
147
|
-
case 'json':
|
|
148
|
-
default:
|
|
149
|
-
example[port.name] = null;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return example;
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=prompt-doc.js.map
|
package/dist/prompt-doc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-doc.js","sourceRoot":"","sources":["../src/prompt-doc.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import type { CapabilityHandler, PluginCategory, PluginManifest, TagmaPlugin } from './types';
|
|
2
|
-
type PluginType = CapabilityHandler;
|
|
3
|
-
export interface RegisteredCapability {
|
|
4
|
-
readonly category: PluginCategory;
|
|
5
|
-
readonly type: string;
|
|
6
|
-
readonly result: RegisterResult;
|
|
7
|
-
}
|
|
8
|
-
export type RegisterResult = 'registered' | 'replaced' | 'unchanged';
|
|
9
|
-
export declare const PLUGIN_NAME_RE: RegExp;
|
|
10
|
-
export declare function isValidPluginName(name: unknown): name is string;
|
|
11
|
-
/**
|
|
12
|
-
* Parse and validate the `tagmaPlugin` field of a `package.json` blob.
|
|
13
|
-
*
|
|
14
|
-
* Returns the strongly-typed manifest if the field is present and
|
|
15
|
-
* well-formed (`category` is one of the four known categories and `type`
|
|
16
|
-
* is a non-empty string). Returns `null` if the field is absent —that
|
|
17
|
-
* is the host's signal that the package is a library, not a plugin.
|
|
18
|
-
*
|
|
19
|
-
* Throws if the field is present but malformed: that's a packaging bug
|
|
20
|
-
* the plugin author should hear about loudly, not a silent skip.
|
|
21
|
-
*
|
|
22
|
-
* Hosts use this during auto-discovery to decide whether to load a
|
|
23
|
-
* package as a plugin without having to dynamically `import()` it.
|
|
24
|
-
*/
|
|
25
|
-
export declare function readPluginManifest(pkgJson: unknown): PluginManifest | null;
|
|
26
|
-
/**
|
|
27
|
-
* Instance-scoped plugin registry. Each workspace in a multi-tenant sidecar
|
|
28
|
-
* owns its own PluginRegistry, so installing/uninstalling a driver in one
|
|
29
|
-
* workspace cannot clobber another.
|
|
30
|
-
*/
|
|
31
|
-
export declare class PluginRegistry {
|
|
32
|
-
private readonly registries;
|
|
33
|
-
/**
|
|
34
|
-
* Register a plugin under (category, type). Returns:
|
|
35
|
-
* - 'registered' on first registration
|
|
36
|
-
* - 'replaced' when an existing entry was overwritten with a different handler
|
|
37
|
-
* - 'unchanged' when the same handler instance was already present
|
|
38
|
-
*
|
|
39
|
-
* Throws if `category` is unknown, `type` is empty, or `handler` violates
|
|
40
|
-
* the minimum interface contract for the category.
|
|
41
|
-
*/
|
|
42
|
-
registerPlugin<T extends PluginType>(category: PluginCategory, type: string, handler: T): RegisterResult;
|
|
43
|
-
registerTagmaPlugin(plugin: TagmaPlugin): RegisteredCapability[];
|
|
44
|
-
/**
|
|
45
|
-
* Remove a plugin from the in-process registry. Returns true if a plugin
|
|
46
|
-
* was actually removed. Note: ESM module caching is not affected, so
|
|
47
|
-
* re-importing the same file after unregister will yield the cached module — * callers wanting a fresh load must restart the host process.
|
|
48
|
-
*/
|
|
49
|
-
unregisterPlugin(category: PluginCategory, type: string): boolean;
|
|
50
|
-
getHandler<T extends PluginType>(category: PluginCategory, type: string): T;
|
|
51
|
-
hasHandler(category: PluginCategory, type: string): boolean;
|
|
52
|
-
listRegistered(category: PluginCategory): string[];
|
|
53
|
-
/**
|
|
54
|
-
* Load and register a list of plugin packages into this registry.
|
|
55
|
-
*
|
|
56
|
-
* @param pluginNames - Validated npm package names to load.
|
|
57
|
-
* @param resolveFrom - Optional absolute path to resolve plugins from (e.g.
|
|
58
|
-
* the workspace's working directory). When omitted, the default ESM
|
|
59
|
-
* resolution uses the SDK's own `node_modules`, which will fail for
|
|
60
|
-
* plugins installed only in the user's workspace. CLI callers should
|
|
61
|
-
* pass `process.cwd()` or the workspace root so that workspace-local
|
|
62
|
-
* plugins resolve correctly.
|
|
63
|
-
*/
|
|
64
|
-
loadPlugins(pluginNames: readonly string[], resolveFrom?: string): Promise<void>;
|
|
65
|
-
}
|
|
66
|
-
export {};
|
|
67
|
-
//# sourceMappingURL=registry.d.ts.map
|
package/dist/registry.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EAKd,cAAc,EACd,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,KAAK,UAAU,GAAG,iBAAiB,CAAC;AAYpC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAwFD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAKrE,eAAO,MAAM,cAAc,QAA4D,CAAC;AAExF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAE/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAwB1E;AA6BD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;IAEF;;;;;;;;OAQG;IACH,cAAc,CAAC,CAAC,SAAS,UAAU,EACjC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,GACT,cAAc;IAiCjB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,EAAE;IAgChE;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAKjE,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAW3E,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3D,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,EAAE;IAIlD;;;;;;;;;;OAUG;IACG,WAAW,CACf,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;CAuBjB"}
|
package/dist/registry.js
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';
|
|
2
|
-
import { pathToFileURL } from 'node:url';
|
|
3
|
-
const CAPABILITY_CATEGORIES = [
|
|
4
|
-
'drivers',
|
|
5
|
-
'triggers',
|
|
6
|
-
'completions',
|
|
7
|
-
'middlewares',
|
|
8
|
-
];
|
|
9
|
-
const VALID_CATEGORIES = new Set(CAPABILITY_CATEGORIES);
|
|
10
|
-
const PLUGIN_TYPE_RE = /^[A-Za-z_][A-Za-z0-9_-]*$/;
|
|
11
|
-
function singularCategory(category) {
|
|
12
|
-
switch (category) {
|
|
13
|
-
case 'drivers':
|
|
14
|
-
return 'driver';
|
|
15
|
-
case 'triggers':
|
|
16
|
-
return 'trigger';
|
|
17
|
-
case 'completions':
|
|
18
|
-
return 'completion';
|
|
19
|
-
case 'middlewares':
|
|
20
|
-
return 'middleware';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Minimal contract enforcement so a malformed plugin fails fast at
|
|
25
|
-
* registration time rather than crashing the engine mid-run.
|
|
26
|
-
*
|
|
27
|
-
* For drivers we materialize `capabilities` and assert each field is a
|
|
28
|
-
* boolean —otherwise a plugin author can write
|
|
29
|
-
* get capabilities() { throw new Error('boom') }
|
|
30
|
-
* and pass the basic typeof check, then crash preflight when the engine
|
|
31
|
-
* touches `driver.capabilities.sessionResume`. (R8)
|
|
32
|
-
*/
|
|
33
|
-
function validateContract(category, handler) {
|
|
34
|
-
if (!handler || typeof handler !== 'object') {
|
|
35
|
-
throw new Error(`Plugin handler for category "${category}" must be an object`);
|
|
36
|
-
}
|
|
37
|
-
const h = handler;
|
|
38
|
-
if (typeof h.name !== 'string' || h.name.length === 0) {
|
|
39
|
-
throw new Error(`Plugin handler for category "${category}" must declare a non-empty "name"`);
|
|
40
|
-
}
|
|
41
|
-
switch (category) {
|
|
42
|
-
case 'drivers': {
|
|
43
|
-
if (typeof h.buildCommand !== 'function') {
|
|
44
|
-
throw new Error(`drivers plugin "${h.name}" must export buildCommand()`);
|
|
45
|
-
}
|
|
46
|
-
// Materialize capabilities —this triggers any throwing getter NOW
|
|
47
|
-
// instead of during preflight.
|
|
48
|
-
let caps;
|
|
49
|
-
try {
|
|
50
|
-
caps = h.capabilities;
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
throw new Error(`drivers plugin "${h.name}" capabilities accessor threw: ` +
|
|
54
|
-
(err instanceof Error ? err.message : String(err)));
|
|
55
|
-
}
|
|
56
|
-
if (!caps || typeof caps !== 'object') {
|
|
57
|
-
throw new Error(`drivers plugin "${h.name}" must declare capabilities object`);
|
|
58
|
-
}
|
|
59
|
-
const c = caps;
|
|
60
|
-
for (const field of ['sessionResume', 'systemPrompt', 'outputFormat']) {
|
|
61
|
-
if (typeof c[field] !== 'boolean') {
|
|
62
|
-
throw new Error(`drivers plugin "${h.name}".capabilities.${field} must be a boolean (got ${typeof c[field]})`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// Optional methods, but if present must be functions.
|
|
66
|
-
for (const opt of ['parseResult', 'resolveModel', 'resolveTools']) {
|
|
67
|
-
if (h[opt] !== undefined && typeof h[opt] !== 'function') {
|
|
68
|
-
throw new Error(`drivers plugin "${h.name}".${opt} must be a function or undefined`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
case 'triggers':
|
|
74
|
-
if (typeof h.watch !== 'function') {
|
|
75
|
-
throw new Error(`triggers plugin "${h.name}" must export watch()`);
|
|
76
|
-
}
|
|
77
|
-
break;
|
|
78
|
-
case 'completions':
|
|
79
|
-
if (typeof h.check !== 'function') {
|
|
80
|
-
throw new Error(`completions plugin "${h.name}" must export check()`);
|
|
81
|
-
}
|
|
82
|
-
break;
|
|
83
|
-
case 'middlewares':
|
|
84
|
-
if (typeof h.enhanceDoc !== 'function') {
|
|
85
|
-
throw new Error(`middlewares plugin "${h.name}" must export enhanceDoc()`);
|
|
86
|
-
}
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Plugin name must be a scoped npm package or a tagma-prefixed package.
|
|
91
|
-
// Reject absolute/relative paths and suspicious patterns to prevent
|
|
92
|
-
// arbitrary code execution via crafted YAML configs.
|
|
93
|
-
export const PLUGIN_NAME_RE = /^(@[a-z0-9-]+\/[a-z0-9._-]+|tagma-plugin-[a-z0-9._-]+)$/;
|
|
94
|
-
export function isValidPluginName(name) {
|
|
95
|
-
return typeof name === 'string' && PLUGIN_NAME_RE.test(name);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Parse and validate the `tagmaPlugin` field of a `package.json` blob.
|
|
99
|
-
*
|
|
100
|
-
* Returns the strongly-typed manifest if the field is present and
|
|
101
|
-
* well-formed (`category` is one of the four known categories and `type`
|
|
102
|
-
* is a non-empty string). Returns `null` if the field is absent —that
|
|
103
|
-
* is the host's signal that the package is a library, not a plugin.
|
|
104
|
-
*
|
|
105
|
-
* Throws if the field is present but malformed: that's a packaging bug
|
|
106
|
-
* the plugin author should hear about loudly, not a silent skip.
|
|
107
|
-
*
|
|
108
|
-
* Hosts use this during auto-discovery to decide whether to load a
|
|
109
|
-
* package as a plugin without having to dynamically `import()` it.
|
|
110
|
-
*/
|
|
111
|
-
export function readPluginManifest(pkgJson) {
|
|
112
|
-
if (!pkgJson || typeof pkgJson !== 'object')
|
|
113
|
-
return null;
|
|
114
|
-
const raw = pkgJson.tagmaPlugin;
|
|
115
|
-
if (raw === undefined)
|
|
116
|
-
return null;
|
|
117
|
-
if (!raw || typeof raw !== 'object') {
|
|
118
|
-
throw new Error('tagmaPlugin field must be an object with { category, type }');
|
|
119
|
-
}
|
|
120
|
-
const m = raw;
|
|
121
|
-
const category = m.category;
|
|
122
|
-
const type = m.type;
|
|
123
|
-
if (typeof category !== 'string' || !VALID_CATEGORIES.has(category)) {
|
|
124
|
-
throw new Error(`tagmaPlugin.category must be one of ${[...VALID_CATEGORIES].join(', ')}, got ${JSON.stringify(category)}`);
|
|
125
|
-
}
|
|
126
|
-
if (typeof type !== 'string' || type.length === 0) {
|
|
127
|
-
throw new Error(`tagmaPlugin.type must be a non-empty string, got ${JSON.stringify(type)}`);
|
|
128
|
-
}
|
|
129
|
-
if (!PLUGIN_TYPE_RE.test(type)) {
|
|
130
|
-
throw new Error(`tagmaPlugin.type must match ${PLUGIN_TYPE_RE} (letters, digits, underscores, hyphens; no paths or dots), got ${JSON.stringify(type)}`);
|
|
131
|
-
}
|
|
132
|
-
return { category: category, type };
|
|
133
|
-
}
|
|
134
|
-
function isRecord(value) {
|
|
135
|
-
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
136
|
-
}
|
|
137
|
-
function isTagmaPlugin(value) {
|
|
138
|
-
if (!isRecord(value))
|
|
139
|
-
return false;
|
|
140
|
-
if (typeof value.name !== 'string' || value.name.length === 0)
|
|
141
|
-
return false;
|
|
142
|
-
if (value.capabilities !== undefined && !isRecord(value.capabilities))
|
|
143
|
-
return false;
|
|
144
|
-
if (value.setup !== undefined && typeof value.setup !== 'function')
|
|
145
|
-
return false;
|
|
146
|
-
return true;
|
|
147
|
-
}
|
|
148
|
-
function hasSupportedCapabilityMap(plugin) {
|
|
149
|
-
if (!plugin.capabilities)
|
|
150
|
-
return false;
|
|
151
|
-
const capabilities = plugin.capabilities;
|
|
152
|
-
return CAPABILITY_CATEGORIES.some((category) => capabilities[category] !== undefined);
|
|
153
|
-
}
|
|
154
|
-
function moduleDefaultPlugin(name, mod) {
|
|
155
|
-
if (!isRecord(mod) || !isTagmaPlugin(mod.default) || !hasSupportedCapabilityMap(mod.default)) {
|
|
156
|
-
throw new Error(`Plugin "${name}" must default-export a TagmaPlugin with capabilities maps`);
|
|
157
|
-
}
|
|
158
|
-
return mod.default;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Instance-scoped plugin registry. Each workspace in a multi-tenant sidecar
|
|
162
|
-
* owns its own PluginRegistry, so installing/uninstalling a driver in one
|
|
163
|
-
* workspace cannot clobber another.
|
|
164
|
-
*/
|
|
165
|
-
export class PluginRegistry {
|
|
166
|
-
registries = {
|
|
167
|
-
drivers: new Map(),
|
|
168
|
-
triggers: new Map(),
|
|
169
|
-
completions: new Map(),
|
|
170
|
-
middlewares: new Map(),
|
|
171
|
-
};
|
|
172
|
-
/**
|
|
173
|
-
* Register a plugin under (category, type). Returns:
|
|
174
|
-
* - 'registered' on first registration
|
|
175
|
-
* - 'replaced' when an existing entry was overwritten with a different handler
|
|
176
|
-
* - 'unchanged' when the same handler instance was already present
|
|
177
|
-
*
|
|
178
|
-
* Throws if `category` is unknown, `type` is empty, or `handler` violates
|
|
179
|
-
* the minimum interface contract for the category.
|
|
180
|
-
*/
|
|
181
|
-
registerPlugin(category, type, handler) {
|
|
182
|
-
if (!VALID_CATEGORIES.has(category)) {
|
|
183
|
-
throw new Error(`Unknown plugin category "${category}"`);
|
|
184
|
-
}
|
|
185
|
-
if (typeof type !== 'string' || type.length === 0) {
|
|
186
|
-
throw new Error(`Plugin type must be a non-empty string (category="${category}")`);
|
|
187
|
-
}
|
|
188
|
-
if (!PLUGIN_TYPE_RE.test(type)) {
|
|
189
|
-
throw new Error(`Plugin type "${type}" must match ${PLUGIN_TYPE_RE} (letters, digits, underscores, hyphens; no paths or dots)`);
|
|
190
|
-
}
|
|
191
|
-
validateContract(category, handler);
|
|
192
|
-
const registry = this.registries[category];
|
|
193
|
-
const existing = registry.get(type);
|
|
194
|
-
if (existing === handler)
|
|
195
|
-
return 'unchanged';
|
|
196
|
-
const wasReplaced = existing !== undefined;
|
|
197
|
-
registry.set(type, handler);
|
|
198
|
-
if (wasReplaced) {
|
|
199
|
-
// D18: surface silent shadowing. Hot-reload flows legitimately replace
|
|
200
|
-
// handlers; installing two different plugin packages that both claim
|
|
201
|
-
// the same (category, type) does not —the second wins and breaks the
|
|
202
|
-
// first's consumers with no audit trail. A console.warn is cheap,
|
|
203
|
-
// respects existing callers that rely on 'replaced', and gives ops a
|
|
204
|
-
// grep-able signal when registrations collide unexpectedly.
|
|
205
|
-
console.warn(`[tagma-sdk] registerPlugin: replaced existing ${category}/${type} - ` +
|
|
206
|
-
`check for duplicate plugin packages claiming the same type.`);
|
|
207
|
-
}
|
|
208
|
-
return wasReplaced ? 'replaced' : 'registered';
|
|
209
|
-
}
|
|
210
|
-
registerTagmaPlugin(plugin) {
|
|
211
|
-
if (!isTagmaPlugin(plugin)) {
|
|
212
|
-
throw new Error('TagmaPlugin must be an object with a non-empty "name"');
|
|
213
|
-
}
|
|
214
|
-
if (!plugin.capabilities) {
|
|
215
|
-
throw new Error(`TagmaPlugin "${plugin.name}" must declare capabilities`);
|
|
216
|
-
}
|
|
217
|
-
const registered = [];
|
|
218
|
-
const capabilities = plugin.capabilities;
|
|
219
|
-
for (const category of CAPABILITY_CATEGORIES) {
|
|
220
|
-
const handlers = capabilities[category];
|
|
221
|
-
if (handlers === undefined)
|
|
222
|
-
continue;
|
|
223
|
-
if (!isRecord(handlers)) {
|
|
224
|
-
throw new Error(`TagmaPlugin "${plugin.name}" capabilities.${category} must be an object map`);
|
|
225
|
-
}
|
|
226
|
-
for (const [type, handler] of Object.entries(handlers)) {
|
|
227
|
-
const result = this.registerPlugin(category, type, handler);
|
|
228
|
-
registered.push({ category, type, result });
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
if (registered.length === 0) {
|
|
232
|
-
throw new Error(`TagmaPlugin "${plugin.name}" must declare at least one supported capability`);
|
|
233
|
-
}
|
|
234
|
-
return registered;
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Remove a plugin from the in-process registry. Returns true if a plugin
|
|
238
|
-
* was actually removed. Note: ESM module caching is not affected, so
|
|
239
|
-
* re-importing the same file after unregister will yield the cached module — * callers wanting a fresh load must restart the host process.
|
|
240
|
-
*/
|
|
241
|
-
unregisterPlugin(category, type) {
|
|
242
|
-
if (!VALID_CATEGORIES.has(category))
|
|
243
|
-
return false;
|
|
244
|
-
return this.registries[category].delete(type);
|
|
245
|
-
}
|
|
246
|
-
getHandler(category, type) {
|
|
247
|
-
const handler = this.registries[category].get(type);
|
|
248
|
-
if (!handler) {
|
|
249
|
-
throw new Error(`${category} type "${type}" not registered.\n` +
|
|
250
|
-
`Install the plugin: bun add @tagma/${singularCategory(category)}-${type}`);
|
|
251
|
-
}
|
|
252
|
-
return handler;
|
|
253
|
-
}
|
|
254
|
-
hasHandler(category, type) {
|
|
255
|
-
return this.registries[category].has(type);
|
|
256
|
-
}
|
|
257
|
-
listRegistered(category) {
|
|
258
|
-
return [...this.registries[category].keys()];
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Load and register a list of plugin packages into this registry.
|
|
262
|
-
*
|
|
263
|
-
* @param pluginNames - Validated npm package names to load.
|
|
264
|
-
* @param resolveFrom - Optional absolute path to resolve plugins from (e.g.
|
|
265
|
-
* the workspace's working directory). When omitted, the default ESM
|
|
266
|
-
* resolution uses the SDK's own `node_modules`, which will fail for
|
|
267
|
-
* plugins installed only in the user's workspace. CLI callers should
|
|
268
|
-
* pass `process.cwd()` or the workspace root so that workspace-local
|
|
269
|
-
* plugins resolve correctly.
|
|
270
|
-
*/
|
|
271
|
-
async loadPlugins(pluginNames, resolveFrom) {
|
|
272
|
-
for (const name of pluginNames) {
|
|
273
|
-
if (!isValidPluginName(name)) {
|
|
274
|
-
throw new Error(`Plugin "${name}" rejected: plugin names must be scoped npm packages ` +
|
|
275
|
-
`(e.g. @tagma/trigger-xyz) or tagma-plugin-* packages. ` +
|
|
276
|
-
`Relative/absolute paths are not allowed.`);
|
|
277
|
-
}
|
|
278
|
-
let moduleUrl = name;
|
|
279
|
-
if (resolveFrom) {
|
|
280
|
-
// Resolve the package entry point relative to the caller's directory
|
|
281
|
-
// so plugins installed in the workspace's node_modules are found
|
|
282
|
-
// even when the SDK itself lives elsewhere (e.g. a global install
|
|
283
|
-
// or a monorepo sibling package).
|
|
284
|
-
const req = createRequire(resolveFrom.endsWith('/') ? resolveFrom : resolveFrom + '/');
|
|
285
|
-
const resolved = req.resolve(name);
|
|
286
|
-
moduleUrl = pathToFileURL(resolved).href;
|
|
287
|
-
}
|
|
288
|
-
const mod = await import(moduleUrl);
|
|
289
|
-
this.registerTagmaPlugin(moduleDefaultPlugin(name, mod));
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
//# sourceMappingURL=registry.js.map
|