pi-daddy 0.43.0 → 0.44.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/CHANGELOG.md +104 -33
- package/README.md +27 -5
- package/THIRD_PARTY_LICENSES/musl-COPYRIGHT.txt +193 -0
- package/THIRD_PARTY_LICENSES/zig-MIT.txt +21 -0
- package/THIRD_PARTY_NOTICES.md +9 -0
- package/contracts/ledger-record/v1/README.md +40 -25
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -5
- package/dist/cli.js.map +1 -1
- package/dist/executors/activity-session.js +116 -65
- package/dist/executors/activity-session.js.map +1 -1
- package/dist/executors/captured-execution.d.ts +13 -0
- package/dist/executors/captured-execution.d.ts.map +1 -0
- package/dist/executors/captured-execution.js +53 -0
- package/dist/executors/captured-execution.js.map +1 -0
- package/dist/executors/child-final.d.ts +31 -0
- package/dist/executors/child-final.d.ts.map +1 -0
- package/dist/executors/child-final.js +197 -0
- package/dist/executors/child-final.js.map +1 -0
- package/dist/executors/executor.d.ts +2 -1
- package/dist/executors/executor.d.ts.map +1 -1
- package/dist/executors/executor.js +12 -0
- package/dist/executors/executor.js.map +1 -1
- package/dist/executors/owned-worker.d.ts +18 -0
- package/dist/executors/owned-worker.d.ts.map +1 -0
- package/dist/executors/owned-worker.js +295 -0
- package/dist/executors/owned-worker.js.map +1 -0
- package/dist/executors/worker-artifact.d.ts +3 -0
- package/dist/executors/worker-artifact.d.ts.map +1 -0
- package/dist/executors/worker-artifact.js +3 -0
- package/dist/executors/worker-artifact.js.map +1 -0
- package/dist/governance/approval-prompt.d.ts +4 -3
- package/dist/governance/approval-prompt.d.ts.map +1 -1
- package/dist/governance/approval-prompt.js +13 -6
- package/dist/governance/approval-prompt.js.map +1 -1
- package/dist/governance/captured-worker-record.d.ts +9 -0
- package/dist/governance/captured-worker-record.d.ts.map +1 -0
- package/dist/governance/captured-worker-record.js +123 -0
- package/dist/governance/captured-worker-record.js.map +1 -0
- package/dist/governance/lease-record.d.ts +4 -0
- package/dist/governance/lease-record.d.ts.map +1 -1
- package/dist/governance/lease-record.js +19 -2
- package/dist/governance/lease-record.js.map +1 -1
- package/dist/governance/ledger-events.d.ts +5 -5
- package/dist/governance/ledger-events.d.ts.map +1 -1
- package/dist/governance/ledger-v3-validation.js +1 -1
- package/dist/governance/ledger-v3-validation.js.map +1 -1
- package/dist/governance/workspace-acceptance.d.ts +3 -1
- package/dist/governance/workspace-acceptance.d.ts.map +1 -1
- package/dist/governance/workspace-acceptance.js +21 -5
- package/dist/governance/workspace-acceptance.js.map +1 -1
- package/dist/governance/workspace-lease.d.ts.map +1 -1
- package/dist/governance/workspace-lease.js +44 -1
- package/dist/governance/workspace-lease.js.map +1 -1
- package/dist/kernel/authority-text.d.ts +3 -0
- package/dist/kernel/authority-text.d.ts.map +1 -0
- package/dist/kernel/authority-text.js +22 -0
- package/dist/kernel/authority-text.js.map +1 -0
- package/dist/kernel/bounded-read-failures.d.ts +9 -0
- package/dist/kernel/bounded-read-failures.d.ts.map +1 -0
- package/dist/kernel/bounded-read-failures.js +33 -0
- package/dist/kernel/bounded-read-failures.js.map +1 -0
- package/dist/kernel/bounded-read-sync.d.ts +24 -0
- package/dist/kernel/bounded-read-sync.d.ts.map +1 -0
- package/dist/kernel/bounded-read-sync.js +75 -0
- package/dist/kernel/bounded-read-sync.js.map +1 -0
- package/dist/kernel/bounded-read.d.ts +29 -2
- package/dist/kernel/bounded-read.d.ts.map +1 -1
- package/dist/kernel/bounded-read.js +98 -9
- package/dist/kernel/bounded-read.js.map +1 -1
- package/dist/kernel/capacity.d.ts +36 -0
- package/dist/kernel/capacity.d.ts.map +1 -0
- package/dist/kernel/capacity.js +94 -0
- package/dist/kernel/capacity.js.map +1 -0
- package/dist/kernel/captured-worker-contract.d.ts +38 -0
- package/dist/kernel/captured-worker-contract.d.ts.map +1 -0
- package/dist/kernel/captured-worker-contract.js +2 -0
- package/dist/kernel/captured-worker-contract.js.map +1 -0
- package/dist/kernel/catalog.d.ts +12 -3
- package/dist/kernel/catalog.d.ts.map +1 -1
- package/dist/kernel/catalog.js +28 -8
- package/dist/kernel/catalog.js.map +1 -1
- package/dist/kernel/chain.d.ts +1 -0
- package/dist/kernel/chain.d.ts.map +1 -1
- package/dist/kernel/chain.js.map +1 -1
- package/dist/kernel/definitions.d.ts +11 -1
- package/dist/kernel/definitions.d.ts.map +1 -1
- package/dist/kernel/definitions.js +6 -3
- package/dist/kernel/definitions.js.map +1 -1
- package/dist/kernel/fanout.d.ts +5 -25
- package/dist/kernel/fanout.d.ts.map +1 -1
- package/dist/kernel/fanout.js +15 -30
- package/dist/kernel/fanout.js.map +1 -1
- package/dist/kernel/grant-env.d.ts +0 -2
- package/dist/kernel/grant-env.d.ts.map +1 -1
- package/dist/kernel/grant-env.js +0 -1
- package/dist/kernel/grant-env.js.map +1 -1
- package/dist/kernel/model-preflight.d.ts +8 -0
- package/dist/kernel/model-preflight.d.ts.map +1 -1
- package/dist/kernel/model-preflight.js +23 -0
- package/dist/kernel/model-preflight.js.map +1 -1
- package/dist/kernel/selected-definitions.d.ts +15 -0
- package/dist/kernel/selected-definitions.d.ts.map +1 -0
- package/dist/kernel/selected-definitions.js +146 -0
- package/dist/kernel/selected-definitions.js.map +1 -0
- package/dist/kernel/skill-packages.d.ts +4 -2
- package/dist/kernel/skill-packages.d.ts.map +1 -1
- package/dist/kernel/skill-packages.js +34 -41
- package/dist/kernel/skill-packages.js.map +1 -1
- package/dist/kernel/skill-resources.d.ts.map +1 -1
- package/dist/kernel/skill-resources.js +8 -11
- package/dist/kernel/skill-resources.js.map +1 -1
- package/dist/kernel/workspace.d.ts +6 -3
- package/dist/kernel/workspace.d.ts.map +1 -1
- package/dist/kernel/workspace.js +10 -6
- package/dist/kernel/workspace.js.map +1 -1
- package/dist/products/dashboard-cli.js +1 -1
- package/dist/products/dashboard-cli.js.map +1 -1
- package/dist/products/dashboard-render.d.ts +1 -2
- package/dist/products/dashboard-render.d.ts.map +1 -1
- package/dist/products/dashboard-render.js +3 -1
- package/dist/products/dashboard-render.js.map +1 -1
- package/dist/products/dashboard-session-client.d.ts +1 -2
- package/dist/products/dashboard-session-client.d.ts.map +1 -1
- package/dist/products/dashboard-session-client.js.map +1 -1
- package/dist/products/episode-report.d.ts +12 -8
- package/dist/products/episode-report.d.ts.map +1 -1
- package/dist/products/episode-report.js +61 -12
- package/dist/products/episode-report.js.map +1 -1
- package/extensions/approvals.ts +1 -1
- package/extensions/chain-plan.ts +9 -3
- package/extensions/context-staging.ts +30 -35
- package/extensions/dashboard-session-server.ts +1 -2
- package/extensions/definition-describe.ts +44 -0
- package/extensions/definition-runtime.ts +89 -26
- package/extensions/delegate-chain.ts +273 -256
- package/extensions/delegation-activation.ts +1 -1
- package/extensions/delegation.ts +41 -53
- package/extensions/execute-child.ts +167 -134
- package/extensions/fanout-outcome.ts +1 -9
- package/extensions/grants-command.ts +2 -9
- package/extensions/grants.ts +106 -38
- package/extensions/init-command.ts +52 -12
- package/extensions/reload-environment.ts +21 -2
- package/extensions/retired-inputs.ts +7 -0
- package/extensions/run-delegation.ts +212 -265
- package/extensions/session-capacity.ts +53 -0
- package/extensions/session-environment.ts +5 -2
- package/extensions/session-model-prompt.ts +33 -32
- package/extensions/session-report.ts +28 -11
- package/extensions/session.ts +200 -157
- package/extensions/workspace-runtime.ts +2 -1
- package/native/README.md +25 -0
- package/native/linux-x64/worker +0 -0
- package/native/linux-x64/worker.sha256 +1 -0
- package/native/provenance.json +42 -0
- package/native/toolchain.json +18 -0
- package/native/worker.c +209 -0
- package/package.json +15 -7
- package/src/cli.ts +16 -6
- package/src/executors/activity-session.ts +120 -66
- package/src/executors/captured-execution.ts +61 -0
- package/src/executors/child-final.ts +190 -0
- package/src/executors/executor.ts +14 -1
- package/src/executors/owned-worker.ts +322 -0
- package/src/executors/worker-artifact.ts +2 -0
- package/src/governance/approval-prompt.ts +18 -8
- package/src/governance/captured-worker-record.ts +138 -0
- package/src/governance/lease-record.ts +21 -2
- package/src/governance/ledger-events.ts +5 -5
- package/src/governance/ledger-v3-validation.ts +1 -1
- package/src/governance/workspace-acceptance.ts +20 -4
- package/src/governance/workspace-lease.ts +59 -1
- package/src/kernel/authority-text.ts +17 -0
- package/src/kernel/bounded-read-failures.ts +42 -0
- package/src/kernel/bounded-read-sync.ts +87 -0
- package/src/kernel/bounded-read.ts +128 -11
- package/src/kernel/capacity.ts +123 -0
- package/src/kernel/captured-worker-contract.ts +29 -0
- package/src/kernel/catalog.ts +45 -16
- package/src/kernel/chain.ts +1 -0
- package/src/kernel/definitions.ts +11 -2
- package/src/kernel/fanout.ts +17 -32
- package/src/kernel/grant-env.ts +0 -3
- package/src/kernel/model-preflight.ts +29 -0
- package/src/kernel/selected-definitions.ts +156 -0
- package/src/kernel/skill-packages.ts +40 -38
- package/src/kernel/skill-resources.ts +8 -9
- package/src/kernel/workspace.ts +12 -5
- package/src/products/dashboard-cli.ts +1 -1
- package/src/products/dashboard-render.ts +6 -2
- package/src/products/dashboard-session-client.ts +1 -2
- package/src/products/episode-report.ts +80 -17
- package/dist/advisors/advisor.d.ts +0 -90
- package/dist/advisors/advisor.d.ts.map +0 -1
- package/dist/advisors/advisor.js +0 -154
- package/dist/advisors/advisor.js.map +0 -1
- package/dist/advisors/decider.d.ts +0 -88
- package/dist/advisors/decider.d.ts.map +0 -1
- package/dist/advisors/decider.js +0 -29
- package/dist/advisors/decider.js.map +0 -1
- package/dist/advisors/jev.d.ts +0 -41
- package/dist/advisors/jev.d.ts.map +0 -1
- package/dist/advisors/jev.js +0 -139
- package/dist/advisors/jev.js.map +0 -1
- package/dist/advisors/settings.d.ts +0 -49
- package/dist/advisors/settings.d.ts.map +0 -1
- package/dist/advisors/settings.js +0 -99
- package/dist/advisors/settings.js.map +0 -1
- package/dist/governance/episode-cost-gate.d.ts +0 -31
- package/dist/governance/episode-cost-gate.d.ts.map +0 -1
- package/dist/governance/episode-cost-gate.js +0 -112
- package/dist/governance/episode-cost-gate.js.map +0 -1
- package/extensions/advisor-session.ts +0 -67
- package/extensions/effort-advice.ts +0 -112
- package/extensions/pruning-advice.ts +0 -133
- package/src/advisors/advisor.ts +0 -246
- package/src/advisors/decider.ts +0 -74
- package/src/advisors/jev.ts +0 -163
- package/src/advisors/settings.ts +0 -115
- package/src/governance/episode-cost-gate.ts +0 -128
package/dist/kernel/fanout.js
CHANGED
|
@@ -1,32 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bounded synchronous fan-out — ADR-0015's option A′, and the cardinality bound ADR-0008 never had.
|
|
3
|
-
*
|
|
4
|
-
* **The gap this closes.** ADR-0008 bounds what each child may *hold* and says nothing about how many
|
|
5
|
-
* children exist. `resolve()` is a set operation; nowhere in `src/` was there a count. Blocking `delegate`
|
|
6
|
-
* bounded cardinality to one *by accident of being blocking*, so the invariant was never tested. Fan-out
|
|
7
|
-
* removes that accident: with `maxDepth: 2` and five children per call, five delegators each spawning five
|
|
8
|
-
* is thirty concurrent model sessions — **every ledger line individually correct and narrow, the aggregate
|
|
9
|
-
* a machine DoS and an uncapped bill.** The critic's verdict on this was that silence is itself a finding.
|
|
10
|
-
*
|
|
11
|
-
* **Why a budget rather than a per-call limit.** A per-call cap of K with depth D still permits K^D
|
|
12
|
-
* descendants, which is the same exponential wearing a smaller number. A *budget* is subtractive and
|
|
13
|
-
* therefore total: a session holding budget B may create at most B descendants in its whole subtree,
|
|
14
|
-
* because it spends from B to spawn and hands each child a share of what is left. That composes across
|
|
15
|
-
* process boundaries with **no shared state** — the same property that makes depth work — so it needs no
|
|
16
|
-
* registry, no lock and no counter file.
|
|
17
|
-
*
|
|
18
|
-
* It is deliberately NOT a concurrency limit. How many run at once is a resource question for the executor;
|
|
19
|
-
* how many may exist at all is a governance question, and this is the governance answer.
|
|
20
|
-
*/
|
|
1
|
+
/** Active descendant allocation arithmetic. Enforcement requires the shared owner allocator in capacity.ts. */
|
|
21
2
|
import { parseBound } from "./propagation.js";
|
|
22
|
-
|
|
3
|
+
import { GovernanceRefusal, refusal } from "./refusals.js";
|
|
4
|
+
/** Active descendant allowance, excluding the owner session, when nothing is configured. */
|
|
23
5
|
export const DEFAULT_FANOUT_BUDGET = 8;
|
|
24
6
|
/**
|
|
25
7
|
* Hard ceiling on children in a single call, independent of budget.
|
|
26
8
|
*
|
|
27
9
|
* A budget alone would let one call spend all of it at once, and a hundred simultaneous `pi` processes is
|
|
28
|
-
* a different failure from a hundred spread over a session.
|
|
29
|
-
*
|
|
10
|
+
* a different failure from a hundred spread over a session. The owner allocator also conserves active
|
|
11
|
+
* capacity across overlapping calls.
|
|
30
12
|
*/
|
|
31
13
|
export const MAX_CHILDREN_PER_CALL = 8;
|
|
32
14
|
/**
|
|
@@ -38,16 +20,17 @@ export const MAX_CHILDREN_PER_CALL = 8;
|
|
|
38
20
|
* operator learns one bound rather than two.
|
|
39
21
|
*/
|
|
40
22
|
export const MAX_CHAIN_STEPS = MAX_CHILDREN_PER_CALL;
|
|
41
|
-
/**
|
|
23
|
+
/** Absent uses the existing default; explicit zero stays exhausted and malformed input refuses. */
|
|
42
24
|
export function budgetFromEnv(raw) {
|
|
25
|
+
if (raw === undefined)
|
|
26
|
+
return DEFAULT_FANOUT_BUDGET;
|
|
43
27
|
const parsed = parseBound(raw);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return parsed === undefined || parsed === null || parsed === 0 ? DEFAULT_FANOUT_BUDGET : parsed;
|
|
28
|
+
if (parsed === null || parsed === undefined)
|
|
29
|
+
throw new GovernanceRefusal(refusal("FANOUT_EXCEEDED", "PI_DADDY_FANOUT must be a non-negative safe decimal integer"));
|
|
30
|
+
return parsed;
|
|
48
31
|
}
|
|
49
32
|
/**
|
|
50
|
-
*
|
|
33
|
+
* Propose disjoint child allowances from currently available capacity; this does not reserve anything.
|
|
51
34
|
*
|
|
52
35
|
* The parent pays one unit per child it creates *before* sharing what is left, so a subtree can never
|
|
53
36
|
* exceed the budget it started with: spawning is itself an expenditure, not a free act that only its
|
|
@@ -55,7 +38,9 @@ export function budgetFromEnv(raw) {
|
|
|
55
38
|
* inventing it — the safe direction, and the reason a deep tree converges to zero instead of oscillating.
|
|
56
39
|
*/
|
|
57
40
|
export function splitBudget(budget, count) {
|
|
58
|
-
if (
|
|
41
|
+
if (!Number.isSafeInteger(budget) || budget < 0)
|
|
42
|
+
return { ok: false, reason: "capacity must be a non-negative safe integer", perChild: 0 };
|
|
43
|
+
if (!Number.isSafeInteger(count) || count <= 0)
|
|
59
44
|
return { ok: false, reason: "a fan-out needs at least one child", perChild: 0 };
|
|
60
45
|
if (count > MAX_CHILDREN_PER_CALL) {
|
|
61
46
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fanout.js","sourceRoot":"","sources":["../../src/kernel/fanout.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fanout.js","sourceRoot":"","sources":["../../src/kernel/fanout.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE3D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAErD,mGAAmG;AACnG,MAAM,UAAU,aAAa,CAAC,GAAuB;IACnD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,qBAAqB,CAAC;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QACzC,MAAM,IAAI,iBAAiB,CACzB,OAAO,CAAC,iBAAiB,EAAE,6DAA6D,CAAC,CAC1F,CAAC;IACJ,OAAO,MAAM,CAAC;AAChB,CAAC;AAQD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAa;IACvD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAC7C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClF,IAAI,KAAK,GAAG,qBAAqB,EAAE,CAAC;QAClC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG,KAAK,2CAA2C,qBAAqB,EAAE;YAClF,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;QACnB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EACJ,6BAA6B,KAAK,wBAAwB,MAAM,6BAA6B;gBAC7F,kEAAkE;YACpE,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAa;IAC1D,OAAO,GAAG,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -113,8 +113,6 @@ export interface ProjectSettings {
|
|
|
113
113
|
ledger: string;
|
|
114
114
|
/** Gated by default (ADR-0012): closed under subsumption, so gating tool:write also gates tool:bash. */
|
|
115
115
|
gatedByDefault: Capability[];
|
|
116
|
-
/** Cumulative provider-reported USD cost at which the episode asks whether to continue. */
|
|
117
|
-
episodeCostCeiling: number;
|
|
118
116
|
}
|
|
119
117
|
export declare function buildProjectSettings(input: GrantEnvInput): ProjectSettings;
|
|
120
118
|
export declare function renderProjectSettings(input: GrantEnvInput): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grant-env.d.ts","sourceRoot":"","sources":["../../src/kernel/grant-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGvE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,UAAU,EAEpD,CAAC;AAEF,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAQ/D;AAaD,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAE9C,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAU/D;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,iCAAiC;IACjC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,6GAA6G;IAC7G,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,yFAAyF;IACzF,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;IAClC,kGAAkG;IAClG,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,eAAe,CAAC;IAC3B,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,6GAA6G;IAC7G,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7F,kGAAkG;IAClG,QAAQ,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAC7D,yFAAyF;IACzF,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,0FAA0F;IAC1F,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,gGAAgG;IAChG,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,wGAAwG;IACxG,cAAc,EAAE,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"grant-env.d.ts","sourceRoot":"","sources":["../../src/kernel/grant-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGvE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,UAAU,EAEpD,CAAC;AAEF,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAQ/D;AAaD,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAE9C,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAU/D;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,iCAAiC;IACjC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,6GAA6G;IAC7G,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,yFAAyF;IACzF,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;IAClC,kGAAkG;IAClG,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,eAAe,CAAC;IAC3B,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,6GAA6G;IAC7G,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7F,kGAAkG;IAClG,QAAQ,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAC7D,yFAAyF;IACzF,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,0FAA0F;IAC1F,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,gGAAgG;IAChG,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,wGAAwG;IACxG,cAAc,EAAE,UAAU,EAAE,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAyB1E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAElE;AAED,qFAAqF;AACrF,eAAO,MAAM,WAAW,EAAE,UAAgC,CAAC"}
|
package/dist/kernel/grant-env.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grant-env.js","sourceRoot":"","sources":["../../src/kernel/grant-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAmB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,sBAAsB,CAAC,CAAC;CACvG,CAAC;AAEF,0DAA0D;AAC1D,MAAM,UAAU,eAAe,CAAC,UAAsB;IACpD,0GAA0G;IAC1G,2GAA2G;IAC3G,kGAAkG;IAClG,yGAAyG;IACzG,yBAAyB;IACzB,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C,MAAM,OAAO,gBAAiB,SAAQ,KAAK;CAAG;AAE9C,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,gBAAgB,CACxB,8FAA8F;YAC5F,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,yEAAyE;YAChH,mGAAmG;YACnG,mDAAmD,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"grant-env.js","sourceRoot":"","sources":["../../src/kernel/grant-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAmB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,sBAAsB,CAAC,CAAC;CACvG,CAAC;AAEF,0DAA0D;AAC1D,MAAM,UAAU,eAAe,CAAC,UAAsB;IACpD,0GAA0G;IAC1G,2GAA2G;IAC3G,kGAAkG;IAClG,yGAAyG;IACzG,yBAAyB;IACzB,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C,MAAM,OAAO,gBAAiB,SAAQ,KAAK;CAAG;AAE9C,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,gBAAgB,CACxB,8FAA8F;YAC5F,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,yEAAyE;YAChH,mGAAmG;YACnG,mDAAmD,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;AA+DD,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,eAAe;QAC1B,MAAM,EACJ,oGAAoG;YACpG,2GAA2G;YAC3G,oGAAoG;QACtG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QACtB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACxB,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW;YACzB,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aACpC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QACnF,mBAAmB,EAAE,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC;QACnD,kBAAkB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QACzD,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC7B,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,cAAc,EAAE,CAAC,WAAW,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAoB;IACxD,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACrE,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,WAAW,GAAe,mBAAmB,CAAC"}
|
|
@@ -7,7 +7,15 @@ export declare function supportedModelEfforts(model: {
|
|
|
7
7
|
}): ("off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max")[];
|
|
8
8
|
export interface ModelCatalogue {
|
|
9
9
|
find(provider: string, modelId: string): unknown;
|
|
10
|
+
getProviderAuthStatus?(provider: string): {
|
|
11
|
+
configured: boolean;
|
|
12
|
+
};
|
|
10
13
|
}
|
|
11
14
|
/** Resolve an explicit provider/id against pi's own session catalogue without probing credentials or network. */
|
|
12
15
|
export declare function preflightModel(model: string | undefined, catalogue: ModelCatalogue, cache: Map<string, boolean>, allowUnresolved: boolean): StructuredRefusal | undefined;
|
|
16
|
+
/** Exact candidate only; never enumerate providers, resolve credentials, probe, or clamp effort. */
|
|
17
|
+
export declare function runtimePairUnavailable(choice: {
|
|
18
|
+
model?: string;
|
|
19
|
+
thinking?: string;
|
|
20
|
+
}, catalogue: ModelCatalogue, allowUnresolved?: boolean): string | undefined;
|
|
13
21
|
//# sourceMappingURL=model-preflight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-preflight.d.ts","sourceRoot":"","sources":["../../src/kernel/model-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,kHAAkH;AAClH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CAC3D,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,EAAE,CAMtE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"model-preflight.d.ts","sourceRoot":"","sources":["../../src/kernel/model-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,kHAAkH;AAClH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CAC3D,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,EAAE,CAMtE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,qBAAqB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;CACnE;AAED,iHAAiH;AACjH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,eAAe,EAAE,OAAO,GACvB,iBAAiB,GAAG,SAAS,CAiB/B;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CACpC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,SAAS,EAAE,cAAc,EACzB,eAAe,UAAQ,GACtB,MAAM,GAAG,SAAS,CAqBpB"}
|
|
@@ -27,4 +27,27 @@ export function preflightModel(model, catalogue, cache, allowUnresolved) {
|
|
|
27
27
|
return refusal("MODEL_UNRESOLVED", `grants: model ${model || "(empty)"} is not in pi's session catalogue; use provider/id from /model, ` +
|
|
28
28
|
`or set ${ENV_ALLOW_UNRESOLVED_MODELS}=1 to let pi attempt custom resolution`, { model: model || "(empty)" });
|
|
29
29
|
}
|
|
30
|
+
/** Exact candidate only; never enumerate providers, resolve credentials, probe, or clamp effort. */
|
|
31
|
+
export function runtimePairUnavailable(choice, catalogue, allowUnresolved = false) {
|
|
32
|
+
if (!choice.model)
|
|
33
|
+
return undefined; // No explicit/current choice: preserve Pi's ordinary configured default.
|
|
34
|
+
const slash = choice.model.indexOf("/");
|
|
35
|
+
const provider = choice.model.slice(0, slash), id = choice.model.slice(slash + 1);
|
|
36
|
+
if (slash <= 0 || !id)
|
|
37
|
+
return "runtime model needs provider/model";
|
|
38
|
+
const model = catalogue.find(provider, id);
|
|
39
|
+
if (!model)
|
|
40
|
+
return allowUnresolved ? undefined : `model ${choice.model} is not in pi's session catalogue`;
|
|
41
|
+
if (choice.thinking !== undefined &&
|
|
42
|
+
typeof model === "object" &&
|
|
43
|
+
model !== null &&
|
|
44
|
+
"reasoning" in model &&
|
|
45
|
+
!supportedModelEfforts(model).includes(choice.thinking)) {
|
|
46
|
+
return `model ${choice.model} does not support thinking ${choice.thinking}`;
|
|
47
|
+
}
|
|
48
|
+
// configured:false cannot distinguish keyless, missing and unknown public provider auth semantics.
|
|
49
|
+
// Reading the passive status is permitted evidence; never turn it into an authentication attempt.
|
|
50
|
+
catalogue.getProviderAuthStatus?.(provider);
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
30
53
|
//# sourceMappingURL=model-preflight.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-preflight.js","sourceRoot":"","sources":["../../src/kernel/model-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,kHAAkH;AAClH,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,OAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7F,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"model-preflight.js","sourceRoot":"","sources":["../../src/kernel/model-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type SkillDefinition } from "./definitions.ts";
|
|
2
|
+
import type { CatalogEntry } from "./catalog.ts";
|
|
3
|
+
export interface SelectedCommand {
|
|
4
|
+
source?: string;
|
|
5
|
+
name: string;
|
|
6
|
+
sourceInfo?: {
|
|
7
|
+
path?: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function selectedDefinitions(commands: readonly SelectedCommand[]): Promise<{
|
|
11
|
+
definitions: Map<string, SkillDefinition>;
|
|
12
|
+
skills: CatalogEntry[];
|
|
13
|
+
skips: string[];
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=selected-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selected-definitions.d.ts","sourceRoot":"","sources":["../../src/kernel/selected-definitions.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8C,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC;AAgGD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC;IACvF,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC,CA2CD"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/** Selected Pi 1.0.4 resources, frozen once per extension instance. No independent resource scan. */
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { dirname, join, resolve as resolvePath } from "node:path";
|
|
4
|
+
import { lstat, realpath } from "node:fs/promises";
|
|
5
|
+
import { BoundedReadCleanupError, readBoundedBytes } from "./bounded-read.js";
|
|
6
|
+
import { ceilingForDefinition, parseSkillDefinition } from "./definitions.js";
|
|
7
|
+
import { resolve } from "./resolve.js";
|
|
8
|
+
const phases = ["plan", "build", "review", "debug", "investigate"];
|
|
9
|
+
const hash = (value) => createHash("sha256").update(value, "utf8").digest("hex");
|
|
10
|
+
const object = (x) => !!x && typeof x === "object" && !Array.isArray(x);
|
|
11
|
+
const exact = (x, keys) => Object.keys(x).sort().join(",") === [...keys].sort().join(",");
|
|
12
|
+
async function read(path) {
|
|
13
|
+
if (!(await lstat(path)).isFile())
|
|
14
|
+
throw Error(`nonregular selected resource: ${path}`);
|
|
15
|
+
const result = await readBoundedBytes(path, { maxBytes: 1024 * 1024, timeoutMs: 3000 });
|
|
16
|
+
if (!result.ok)
|
|
17
|
+
throw Error(result.detail);
|
|
18
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(result.bytes);
|
|
19
|
+
}
|
|
20
|
+
async function principalBinding(path, inline, skillText) {
|
|
21
|
+
const phase = inline.name;
|
|
22
|
+
const marked = inline.metadata?.["principal-package"] === "principal-pi-skills";
|
|
23
|
+
if (!phases.includes(phase) || path !== join(dirname(dirname(path)), phase, "SKILL.md")) {
|
|
24
|
+
if (marked)
|
|
25
|
+
throw Error("marked Principal skill has a noncanonical phase or path");
|
|
26
|
+
return inline;
|
|
27
|
+
}
|
|
28
|
+
const root = dirname(dirname(path));
|
|
29
|
+
let packageText;
|
|
30
|
+
try {
|
|
31
|
+
packageText = await read(join(root, "package.json"));
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error.code === "ENOENT" && !marked)
|
|
35
|
+
return inline;
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
const pkg = JSON.parse(packageText);
|
|
39
|
+
if (!object(pkg) || pkg.name !== "principal-pi-skills") {
|
|
40
|
+
if (marked)
|
|
41
|
+
throw Error("marked Principal skill has missing or wrong package identity");
|
|
42
|
+
return inline;
|
|
43
|
+
}
|
|
44
|
+
const manifest = JSON.parse(await read(join(root, "principal-agents.json")));
|
|
45
|
+
if (!object(manifest) ||
|
|
46
|
+
!exact(manifest, ["version", "package", "bindings"]) ||
|
|
47
|
+
manifest.version !== 1 ||
|
|
48
|
+
manifest.package !== "principal-pi-skills" ||
|
|
49
|
+
!object(manifest.bindings) ||
|
|
50
|
+
!exact(manifest.bindings, phases))
|
|
51
|
+
throw Error("invalid Principal binding manifest");
|
|
52
|
+
for (const name of phases) {
|
|
53
|
+
const row = manifest.bindings[name];
|
|
54
|
+
if (!object(row) ||
|
|
55
|
+
!exact(row, ["skill", "agent", "skillSha256", "agentSha256"]) ||
|
|
56
|
+
row.skill !== `${name}/SKILL.md` ||
|
|
57
|
+
row.agent !== `agents/principal-${name}.md` ||
|
|
58
|
+
typeof row.skillSha256 !== "string" ||
|
|
59
|
+
!/^[a-f0-9]{64}$/.test(row.skillSha256) ||
|
|
60
|
+
typeof row.agentSha256 !== "string" ||
|
|
61
|
+
!/^[a-f0-9]{64}$/.test(row.agentSha256))
|
|
62
|
+
throw Error("invalid Principal binding row");
|
|
63
|
+
}
|
|
64
|
+
const row = manifest.bindings[phase];
|
|
65
|
+
const agentPath = join(root, row.agent);
|
|
66
|
+
if ((await realpath(agentPath)) !== join(await realpath(root), row.agent) ||
|
|
67
|
+
(await realpath(path)) !== join(await realpath(root), row.skill))
|
|
68
|
+
throw Error("Principal binding path escaped its selected package");
|
|
69
|
+
const agentText = await read(agentPath);
|
|
70
|
+
if (hash(skillText) !== row.skillSha256 || hash(agentText) !== row.agentSha256)
|
|
71
|
+
throw Error("Principal binding hash mismatch");
|
|
72
|
+
const agent = parseSkillDefinition(agentPath, agentText);
|
|
73
|
+
if (!agent)
|
|
74
|
+
throw Error("Principal delegated definition is malformed");
|
|
75
|
+
const inlineCeiling = ceilingForDefinition(inline), delegatedCeiling = ceilingForDefinition(agent);
|
|
76
|
+
if (inlineCeiling.undeclared ||
|
|
77
|
+
delegatedCeiling.undeclared ||
|
|
78
|
+
inlineCeiling.patterns.length ||
|
|
79
|
+
delegatedCeiling.patterns.length)
|
|
80
|
+
throw Error("Principal binding needs two declared pattern-free ceilings");
|
|
81
|
+
const ceiling = resolve({
|
|
82
|
+
requested: delegatedCeiling.capabilities,
|
|
83
|
+
parentGrant: inlineCeiling.capabilities,
|
|
84
|
+
subsumption: false,
|
|
85
|
+
}).effective;
|
|
86
|
+
const header = /^---\r?\n[\s\S]*?\r?\n---\r?\n?/.exec(agentText);
|
|
87
|
+
return {
|
|
88
|
+
...agent,
|
|
89
|
+
name: phase,
|
|
90
|
+
source: agentPath,
|
|
91
|
+
sourceHash: hash(agentText),
|
|
92
|
+
selectedSkillHash: hash(skillText),
|
|
93
|
+
body: agentText.slice(header[0].length),
|
|
94
|
+
allowedTools: ceiling.join(","),
|
|
95
|
+
runtimePreferences: agent.runtimePreferences ?? inline.runtimePreferences,
|
|
96
|
+
...(typeof pkg.version === "string" ? { packageVersion: pkg.version } : {}),
|
|
97
|
+
binding: Object.freeze({ package: "principal-pi-skills", phase }),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export async function selectedDefinitions(commands) {
|
|
101
|
+
const definitions = new Map();
|
|
102
|
+
const skills = [], skips = [], seen = new Set();
|
|
103
|
+
for (const command of commands) {
|
|
104
|
+
if (command.source !== "skill" || !command.name.startsWith("skill:"))
|
|
105
|
+
continue;
|
|
106
|
+
const name = command.name.slice(6);
|
|
107
|
+
if (seen.has(name)) {
|
|
108
|
+
definitions.delete(name);
|
|
109
|
+
skips.push(`${name}: duplicate selected resource`);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
seen.add(name);
|
|
113
|
+
try {
|
|
114
|
+
if (!command.sourceInfo?.path)
|
|
115
|
+
throw Error("selected resource lacks a public source path");
|
|
116
|
+
const path = resolvePath(command.sourceInfo.path);
|
|
117
|
+
const text = await read(path);
|
|
118
|
+
const parsed = parseSkillDefinition(path, text);
|
|
119
|
+
if (!parsed || parsed.name !== name)
|
|
120
|
+
throw Error("selected name/path does not match definition");
|
|
121
|
+
const bound = await principalBinding(path, parsed, text);
|
|
122
|
+
const definitionId = hash(JSON.stringify({
|
|
123
|
+
name,
|
|
124
|
+
source: bound.source,
|
|
125
|
+
sourceHash: bound.sourceHash,
|
|
126
|
+
selectedSkillHash: bound.selectedSkillHash,
|
|
127
|
+
body: bound.body,
|
|
128
|
+
allowedTools: bound.allowedTools,
|
|
129
|
+
runtimePreferences: bound.runtimePreferences,
|
|
130
|
+
binding: bound.binding,
|
|
131
|
+
packageVersion: bound.packageVersion,
|
|
132
|
+
}));
|
|
133
|
+
if (bound.metadata)
|
|
134
|
+
Object.freeze(bound.metadata);
|
|
135
|
+
definitions.set(name, Object.freeze({ ...bound, definitionId }));
|
|
136
|
+
skills.push({ capability: `skill:${name}`, kind: "skill", source: path });
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (error instanceof BoundedReadCleanupError)
|
|
140
|
+
throw error;
|
|
141
|
+
skips.push(`${name}: ${String(error)}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return { definitions, skills: skills.filter((s) => definitions.has(s.capability.slice(6))), skips };
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=selected-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selected-definitions.js","sourceRoot":"","sources":["../../src/kernel/selected-definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* the explicit package.json pi.skills declaration remains a scaffold source (ADR-0074).
|
|
5
5
|
* Names, ceilings and bytes are checked before they can enter the generated shell grant.
|
|
6
6
|
*/
|
|
7
|
+
import { readBoundedBytes } from "./bounded-read.ts";
|
|
7
8
|
import { type SkillDefinition } from "./definitions.ts";
|
|
8
9
|
import { isSafeCapability } from "./capabilities.ts";
|
|
9
10
|
export interface DiscoveredSkill {
|
|
@@ -88,7 +89,7 @@ export declare function isSafeName(name: string): boolean;
|
|
|
88
89
|
*/
|
|
89
90
|
export { isSafeCapability };
|
|
90
91
|
/** Read one installed package, if it declares skills. `null` means "not a skill package", not an error. */
|
|
91
|
-
export declare function readSkillPackage(packageDir: string): Promise<SkillPackage | null>;
|
|
92
|
+
export declare function readSkillPackage(packageDir: string, reader?: typeof readBoundedBytes): Promise<SkillPackage | null>;
|
|
92
93
|
/**
|
|
93
94
|
* Every installed package under `<cwd>/node_modules` that declares `pi.skills`, sorted by name.
|
|
94
95
|
*
|
|
@@ -112,5 +113,6 @@ export declare function readSkillPackage(packageDir: string): Promise<SkillPacka
|
|
|
112
113
|
* Project first when both exist, because a package pinned in the repository is the one the team agreed on.
|
|
113
114
|
*/
|
|
114
115
|
export declare function skillPackageRoots(cwd: string): string[];
|
|
115
|
-
|
|
116
|
+
/** The optional reader is a trusted per-loader dependency, never package metadata or requester input. */
|
|
117
|
+
export declare function discoverSkillPackages(cwd: string, reader?: typeof readBoundedBytes): Promise<SkillPackage[]>;
|
|
116
118
|
//# sourceMappingURL=skill-packages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-packages.d.ts","sourceRoot":"","sources":["../../src/kernel/skill-packages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"skill-packages.d.ts","sourceRoot":"","sources":["../../src/kernel/skill-packages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,2GAA2G;IAC3G,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,6FAA6F;AAC7F,MAAM,MAAM,aAAa;AACvB,uFAAuF;AACrF,aAAa;AACf,yFAAyF;GACvF,mBAAmB;AACrB,yGAAyG;GACvG,UAAU;AACZ,iFAAiF;GAC/E,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,sDAAsD;IACtD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,yGAAyG;IACzG,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uGAAuG;IACvG,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAwE5B,2GAA2G;AAC3G,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAO,gBAAmC,GACjD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgC9B;AAED;;;;;;GAMG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAGvD;AAED,yGAAyG;AACzG,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,OAAO,gBAAmC,GACjD,OAAO,CAAC,YAAY,EAAE,CAAC,CAyEzB"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* the explicit package.json pi.skills declaration remains a scaffold source (ADR-0074).
|
|
5
5
|
* Names, ceilings and bytes are checked before they can enter the generated shell grant.
|
|
6
6
|
*/
|
|
7
|
-
import { readdir,
|
|
7
|
+
import { readdir, realpath } from "node:fs/promises";
|
|
8
|
+
import { readOptionalAuthorityText } from "./authority-text.js";
|
|
8
9
|
import { readBoundedBytes } from "./bounded-read.js";
|
|
9
10
|
import { homedir } from "node:os";
|
|
10
11
|
import { join, resolve, sep } from "node:path";
|
|
@@ -93,7 +94,7 @@ function refusalFor(skill) {
|
|
|
93
94
|
return null;
|
|
94
95
|
}
|
|
95
96
|
/** One `pi.skills` entry: a directory holding `SKILL.md`, or a `.md` file — the same two shapes pi allows. */
|
|
96
|
-
async function readSkill(packageDir, entry) {
|
|
97
|
+
async function readSkill(packageDir, entry, reader) {
|
|
97
98
|
const target = resolve(packageDir, entry);
|
|
98
99
|
// A manifest is data from another package, so an entry escaping its own directory is refused rather than
|
|
99
100
|
// followed. **`realpath`, not a lexical prefix test** (R-80): `resolve()` normalises `..` and knows
|
|
@@ -108,7 +109,7 @@ async function readSkill(packageDir, entry) {
|
|
|
108
109
|
// `loadDefinitions` and accepted here, so `pi-daddy init` wrote `agent:advice` into the operator's grant
|
|
109
110
|
// for a definition the session could never load, and the eventual `delegate` said only
|
|
110
111
|
// `unknown agent "advice"`. An unreadable entry lands in `unreadable`, which `init` already prints.
|
|
111
|
-
const read = await
|
|
112
|
+
const read = await reader(path, {
|
|
112
113
|
maxBytes: DEFINITION_MAX_BYTES,
|
|
113
114
|
timeoutMs: DEFINITION_READ_TIMEOUT_MS,
|
|
114
115
|
});
|
|
@@ -130,14 +131,12 @@ async function readSkill(packageDir, entry) {
|
|
|
130
131
|
return null;
|
|
131
132
|
}
|
|
132
133
|
/** Read one installed package, if it declares skills. `null` means "not a skill package", not an error. */
|
|
133
|
-
export async function readSkillPackage(packageDir) {
|
|
134
|
+
export async function readSkillPackage(packageDir, reader = readBoundedBytes) {
|
|
134
135
|
let manifest;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
catch {
|
|
136
|
+
const text = await readOptionalAuthorityText(join(packageDir, "package.json"));
|
|
137
|
+
if (text === undefined)
|
|
139
138
|
return null;
|
|
140
|
-
|
|
139
|
+
manifest = JSON.parse(text);
|
|
141
140
|
const declared = manifest.pi?.skills;
|
|
142
141
|
if (!Array.isArray(declared) || declared.length === 0)
|
|
143
142
|
return null;
|
|
@@ -147,7 +146,7 @@ export async function readSkillPackage(packageDir) {
|
|
|
147
146
|
for (const entry of declared) {
|
|
148
147
|
if (typeof entry !== "string")
|
|
149
148
|
continue;
|
|
150
|
-
const skill = await readSkill(packageDir, entry);
|
|
149
|
+
const skill = await readSkill(packageDir, entry, reader);
|
|
151
150
|
if (skill === null) {
|
|
152
151
|
unreadable.push(entry);
|
|
153
152
|
}
|
|
@@ -196,7 +195,8 @@ export function skillPackageRoots(cwd) {
|
|
|
196
195
|
const agentDir = resolveAgentDir();
|
|
197
196
|
return [join(cwd, "node_modules"), join(agentDir, "npm", "node_modules")];
|
|
198
197
|
}
|
|
199
|
-
|
|
198
|
+
/** The optional reader is a trusted per-loader dependency, never package metadata or requester input. */
|
|
199
|
+
export async function discoverSkillPackages(cwd, reader = readBoundedBytes) {
|
|
200
200
|
const resolved = await resolveSkillResources(cwd);
|
|
201
201
|
const packages = [];
|
|
202
202
|
const seenSkills = new Set();
|
|
@@ -210,16 +210,13 @@ export async function discoverSkillPackages(cwd) {
|
|
|
210
210
|
return [versionAt < 0 ? spec : spec.slice(0, versionAt)];
|
|
211
211
|
}));
|
|
212
212
|
for (const root of configuredRoots) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
catch {
|
|
217
|
-
/* absent */
|
|
218
|
-
}
|
|
213
|
+
const text = await readOptionalAuthorityText(join(root, "package.json"));
|
|
214
|
+
if (text !== undefined)
|
|
215
|
+
configuredNames.add(JSON.parse(text).name);
|
|
219
216
|
}
|
|
220
217
|
for (const resource of resolved.skills) {
|
|
221
218
|
// Same bound, same reason: this is the third `SKILL.md` reader and it feeds `planInit`.
|
|
222
|
-
const resourceRead = await
|
|
219
|
+
const resourceRead = await reader(resource.path, {
|
|
223
220
|
maxBytes: DEFINITION_MAX_BYTES,
|
|
224
221
|
timeoutMs: DEFINITION_READ_TIMEOUT_MS,
|
|
225
222
|
});
|
|
@@ -234,14 +231,12 @@ export async function discoverSkillPackages(cwd) {
|
|
|
234
231
|
let name = resource.metadata.source;
|
|
235
232
|
let version = "local";
|
|
236
233
|
if (resource.metadata.origin === "package" && resource.metadata.baseDir) {
|
|
237
|
-
|
|
238
|
-
|
|
234
|
+
const text = await readOptionalAuthorityText(join(resource.metadata.baseDir, "package.json"));
|
|
235
|
+
if (text !== undefined) {
|
|
236
|
+
const manifest = JSON.parse(text);
|
|
239
237
|
name = manifest.name ?? name;
|
|
240
238
|
version = manifest.version ?? version;
|
|
241
239
|
}
|
|
242
|
-
catch {
|
|
243
|
-
/* the resource can be used without optional display metadata */
|
|
244
|
-
}
|
|
245
240
|
}
|
|
246
241
|
else
|
|
247
242
|
name = `${resource.metadata.scope} skills`;
|
|
@@ -273,7 +268,7 @@ export async function discoverSkillPackages(cwd) {
|
|
|
273
268
|
for (const dir of dirs) {
|
|
274
269
|
if (configuredRoots.has(resolve(dir)))
|
|
275
270
|
continue;
|
|
276
|
-
const found = await readSkillPackage(dir);
|
|
271
|
+
const found = await readSkillPackage(dir, reader);
|
|
277
272
|
if (!found || configuredNames.has(found.name) || seenNames.has(found.name))
|
|
278
273
|
continue;
|
|
279
274
|
seenNames.add(found.name);
|
|
@@ -286,26 +281,24 @@ export async function discoverSkillPackages(cwd) {
|
|
|
286
281
|
async function collectFrom(root, dirs) {
|
|
287
282
|
let entries;
|
|
288
283
|
try {
|
|
289
|
-
entries = await readdir(root);
|
|
284
|
+
entries = await readdir(root, { withFileTypes: true });
|
|
290
285
|
}
|
|
291
|
-
catch {
|
|
292
|
-
|
|
286
|
+
catch (error) {
|
|
287
|
+
if (error.code === "ENOENT")
|
|
288
|
+
return;
|
|
289
|
+
throw error;
|
|
293
290
|
}
|
|
294
|
-
for (const entry of entries.sort()) {
|
|
295
|
-
if (entry.startsWith("."))
|
|
296
|
-
continue;
|
|
297
|
-
if (entry.startsWith("@")) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
catch {
|
|
303
|
-
continue;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
dirs.push(join(root, entry));
|
|
291
|
+
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
292
|
+
if (entry.name.startsWith(".") || (!entry.isDirectory() && !entry.isSymbolicLink()))
|
|
293
|
+
continue;
|
|
294
|
+
if (entry.name.startsWith("@")) {
|
|
295
|
+
const scoped = await readdir(join(root, entry.name), { withFileTypes: true });
|
|
296
|
+
for (const child of scoped.sort((a, b) => a.name.localeCompare(b.name)))
|
|
297
|
+
if (child.isDirectory() || child.isSymbolicLink())
|
|
298
|
+
dirs.push(join(root, entry.name, child.name));
|
|
308
299
|
}
|
|
300
|
+
else
|
|
301
|
+
dirs.push(join(root, entry.name));
|
|
309
302
|
}
|
|
310
303
|
}
|
|
311
304
|
//# sourceMappingURL=skill-packages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-packages.js","sourceRoot":"","sources":["../../src/kernel/skill-packages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"skill-packages.js","sourceRoot":"","sources":["../../src/kernel/skill-packages.ts"],"names":[],"mappings":"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"}
|