@corenel/harness 0.1.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/agentMap.d.ts +34 -0
- package/dist/acp/agentMap.d.ts.map +1 -0
- package/dist/acp/agentMap.js +110 -0
- package/dist/acp/agentMap.js.map +1 -0
- package/dist/acp/index.d.ts +4 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +6 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/policyMap.d.ts +55 -0
- package/dist/acp/policyMap.d.ts.map +1 -0
- package/dist/acp/policyMap.js +121 -0
- package/dist/acp/policyMap.js.map +1 -0
- package/dist/acp/types.d.ts +41 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +14 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/api/backend.d.ts +39 -0
- package/dist/api/backend.d.ts.map +1 -0
- package/dist/api/backend.js +126 -0
- package/dist/api/backend.js.map +1 -0
- package/dist/api/client.d.ts +95 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +212 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/fileMirrorSource.d.ts +24 -0
- package/dist/api/fileMirrorSource.d.ts.map +1 -0
- package/dist/api/fileMirrorSource.js +59 -0
- package/dist/api/fileMirrorSource.js.map +1 -0
- package/dist/api/mirror.d.ts +102 -0
- package/dist/api/mirror.d.ts.map +1 -0
- package/dist/api/mirror.js +204 -0
- package/dist/api/mirror.js.map +1 -0
- package/dist/api/mirrorScheduler.d.ts +56 -0
- package/dist/api/mirrorScheduler.d.ts.map +1 -0
- package/dist/api/mirrorScheduler.js +167 -0
- package/dist/api/mirrorScheduler.js.map +1 -0
- package/dist/conversation.d.ts +0 -11
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1 -24
- package/dist/conversation.js.map +1 -1
- package/dist/core/budget.d.ts +40 -0
- package/dist/core/budget.d.ts.map +1 -0
- package/dist/core/budget.js +62 -0
- package/dist/core/budget.js.map +1 -0
- package/dist/core/loop.d.ts +11 -0
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +89 -20
- package/dist/core/loop.js.map +1 -1
- package/dist/core/pricing.d.ts +8 -0
- package/dist/core/pricing.d.ts.map +1 -0
- package/dist/core/pricing.js +12 -0
- package/dist/core/pricing.js.map +1 -0
- package/dist/core/recovery.d.ts +60 -0
- package/dist/core/recovery.d.ts.map +1 -0
- package/dist/core/recovery.js +128 -0
- package/dist/core/recovery.js.map +1 -0
- package/dist/guardrail/builtins.js +6 -6
- package/dist/guardrail/builtins.js.map +1 -1
- package/dist/guardrail/permission-service.js +1 -1
- package/dist/guardrail/permission-service.js.map +1 -1
- package/dist/guardrail/serialize.d.ts.map +1 -1
- package/dist/guardrail/serialize.js +6 -0
- package/dist/guardrail/serialize.js.map +1 -1
- package/dist/guardrail/validate.d.ts.map +1 -1
- package/dist/guardrail/validate.js +13 -0
- package/dist/guardrail/validate.js.map +1 -1
- package/dist/install/lockfile.d.ts +79 -0
- package/dist/install/lockfile.d.ts.map +1 -0
- package/dist/install/lockfile.js +155 -0
- package/dist/install/lockfile.js.map +1 -0
- package/dist/install/store.d.ts +13 -0
- package/dist/install/store.d.ts.map +1 -0
- package/dist/install/store.js +38 -0
- package/dist/install/store.js.map +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +6 -1
- package/dist/log.js.map +1 -1
- package/dist/prompts/host.d.ts +4 -0
- package/dist/prompts/host.d.ts.map +1 -1
- package/dist/prompts/host.js.map +1 -1
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +16 -6
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/library/defaults.generated.d.ts.map +1 -1
- package/dist/prompts/library/defaults.generated.js +22 -4
- package/dist/prompts/library/defaults.generated.js.map +1 -1
- package/dist/prompts/toolsMarker.d.ts +13 -0
- package/dist/prompts/toolsMarker.d.ts.map +1 -0
- package/dist/prompts/toolsMarker.js +21 -0
- package/dist/prompts/toolsMarker.js.map +1 -0
- package/dist/providers/gateway.d.ts +19 -1
- package/dist/providers/gateway.d.ts.map +1 -1
- package/dist/providers/gateway.js +33 -4
- package/dist/providers/gateway.js.map +1 -1
- package/dist/services.d.ts +13 -0
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +2 -0
- package/dist/services.js.map +1 -1
- package/dist/sessions/apiLeaseStore.d.ts +10 -0
- package/dist/sessions/apiLeaseStore.d.ts.map +1 -0
- package/dist/sessions/apiLeaseStore.js +41 -0
- package/dist/sessions/apiLeaseStore.js.map +1 -0
- package/dist/sessions/fileRecallStore.d.ts +33 -0
- package/dist/sessions/fileRecallStore.d.ts.map +1 -0
- package/dist/sessions/fileRecallStore.js +112 -0
- package/dist/sessions/fileRecallStore.js.map +1 -0
- package/dist/sessions/fileSessionStore.d.ts +20 -0
- package/dist/sessions/fileSessionStore.d.ts.map +1 -0
- package/dist/sessions/fileSessionStore.js +151 -0
- package/dist/sessions/fileSessionStore.js.map +1 -0
- package/dist/sessions/head.d.ts +90 -0
- package/dist/sessions/head.d.ts.map +1 -0
- package/dist/sessions/head.js +82 -0
- package/dist/sessions/head.js.map +1 -0
- package/dist/sessions/inflight.d.ts +58 -0
- package/dist/sessions/inflight.d.ts.map +1 -0
- package/dist/sessions/inflight.js +0 -0
- package/dist/sessions/inflight.js.map +1 -0
- package/dist/sessions/jsonl.d.ts +23 -0
- package/dist/sessions/jsonl.d.ts.map +1 -0
- package/dist/sessions/jsonl.js +52 -0
- package/dist/sessions/jsonl.js.map +1 -0
- package/dist/sessions/lease.d.ts +59 -0
- package/dist/sessions/lease.d.ts.map +1 -0
- package/dist/sessions/lease.js +115 -0
- package/dist/sessions/lease.js.map +1 -0
- package/dist/sessions/leaseStore.d.ts +46 -0
- package/dist/sessions/leaseStore.d.ts.map +1 -0
- package/dist/sessions/leaseStore.js +58 -0
- package/dist/sessions/leaseStore.js.map +1 -0
- package/dist/sessions/testFs.d.ts +5 -0
- package/dist/sessions/testFs.d.ts.map +1 -0
- package/dist/sessions/testFs.js +85 -0
- package/dist/sessions/testFs.js.map +1 -0
- package/dist/sessions/timeline.d.ts +134 -0
- package/dist/sessions/timeline.d.ts.map +1 -0
- package/dist/sessions/timeline.js +127 -0
- package/dist/sessions/timeline.js.map +1 -0
- package/dist/sidecar/host.d.ts +284 -2
- package/dist/sidecar/host.d.ts.map +1 -1
- package/dist/sidecar/host.js +725 -1
- package/dist/sidecar/host.js.map +1 -1
- package/dist/sidecar/server.d.ts +217 -2
- package/dist/sidecar/server.d.ts.map +1 -1
- package/dist/sidecar/server.js +828 -3
- package/dist/sidecar/server.js.map +1 -1
- package/dist/skills.d.ts +8 -3
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +71 -35
- package/dist/skills.js.map +1 -1
- package/dist/snapshot/effects.d.ts +69 -0
- package/dist/snapshot/effects.d.ts.map +1 -0
- package/dist/snapshot/effects.js +67 -0
- package/dist/snapshot/effects.js.map +1 -0
- package/dist/snapshot/manifest.d.ts +73 -0
- package/dist/snapshot/manifest.d.ts.map +1 -0
- package/dist/snapshot/manifest.js +141 -0
- package/dist/snapshot/manifest.js.map +1 -0
- package/dist/snapshot/tree.d.ts +62 -0
- package/dist/snapshot/tree.d.ts.map +1 -0
- package/dist/snapshot/tree.js +147 -0
- package/dist/snapshot/tree.js.map +1 -0
- package/dist/tools/builtins.d.ts +1 -0
- package/dist/tools/builtins.d.ts.map +1 -1
- package/dist/tools/builtins.js +150 -5
- package/dist/tools/builtins.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +13 -0
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/http.d.ts.map +1 -1
- package/dist/tools/http.js.map +1 -1
- package/dist/tools/namespaces.d.ts +1 -1
- package/dist/tools/namespaces.d.ts.map +1 -1
- package/dist/tools/namespaces.js +24 -0
- package/dist/tools/namespaces.js.map +1 -1
- package/dist/tools/todo.d.ts.map +1 -1
- package/dist/tools/todo.js +12 -0
- package/dist/tools/todo.js.map +1 -1
- package/package.json +26 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../guardrail/validate.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,GAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3D,MAAM,OAAO,GAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../guardrail/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** Package kinds the registry serves. A plain string union rather than an import
|
|
2
|
+
* from @prompd/core, to keep this module free of that dependency; unknown kinds
|
|
3
|
+
* off the wire are preserved rather than rejected (see parseLock). */
|
|
4
|
+
export type LockedType = 'package' | 'workflow' | 'skill' | 'node-template' | (string & {});
|
|
5
|
+
export interface LockedPackage {
|
|
6
|
+
/** Full scoped name, e.g. "@prompd/core". */
|
|
7
|
+
name: string;
|
|
8
|
+
/** EXACT resolved version. A range here would defeat the point. */
|
|
9
|
+
version: string;
|
|
10
|
+
type: LockedType;
|
|
11
|
+
/** Entry-relative paths the install wrote. Optional: node-templates write none,
|
|
12
|
+
* and an older lockfile may predate the field. Sorted when present, so the
|
|
13
|
+
* serialization stays canonical. */
|
|
14
|
+
files?: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface Lockfile {
|
|
17
|
+
lockfileVersion: 1;
|
|
18
|
+
packages: LockedPackage[];
|
|
19
|
+
}
|
|
20
|
+
export declare const LOCKFILE_VERSION: 1;
|
|
21
|
+
/** Conventional location, alongside the manifest it pins. */
|
|
22
|
+
export declare const LOCKFILE_PATH = ".prompd/prompd-lock.json";
|
|
23
|
+
export declare function emptyLock(): Lockfile;
|
|
24
|
+
/**
|
|
25
|
+
* Add or replace entries, returning a NEW lockfile.
|
|
26
|
+
*
|
|
27
|
+
* Replacement is by name+version, so re-installing the same version updates its
|
|
28
|
+
* file list in place rather than duplicating it, while a genuinely new version
|
|
29
|
+
* is added alongside — matching how core installs to a per-version directory.
|
|
30
|
+
*/
|
|
31
|
+
export declare function withPackages(lock: Lockfile, added: readonly LockedPackage[]): Lockfile;
|
|
32
|
+
/** Drop every version of a package by name — the uninstall counterpart. */
|
|
33
|
+
export declare function withoutPackage(lock: Lockfile, name: string): Lockfile;
|
|
34
|
+
/**
|
|
35
|
+
* Canonical text form. Key order is fixed by construction (the object literals in
|
|
36
|
+
* `normalize`), packages are sorted, and the file ends with a newline — so the
|
|
37
|
+
* same install set always produces the same bytes.
|
|
38
|
+
*/
|
|
39
|
+
export declare function serializeLock(lock: Lockfile): string;
|
|
40
|
+
/**
|
|
41
|
+
* Parse a lockfile, or null when the text is not one.
|
|
42
|
+
*
|
|
43
|
+
* Tolerant of unknown package TYPES (the registry may serve a kind this build
|
|
44
|
+
* predates, and dropping it would silently un-pin a dependency) but strict about
|
|
45
|
+
* name and version, since an entry missing either cannot pin anything and is
|
|
46
|
+
* worse than absent. A future lockfileVersion returns null rather than being
|
|
47
|
+
* misread by rules that no longer apply.
|
|
48
|
+
*/
|
|
49
|
+
export declare function parseLock(text: string): Lockfile | null;
|
|
50
|
+
export interface LockDiff {
|
|
51
|
+
/** In `next` but not `prev`. */
|
|
52
|
+
added: LockedPackage[];
|
|
53
|
+
/** In `prev` but not `next`. */
|
|
54
|
+
removed: LockedPackage[];
|
|
55
|
+
}
|
|
56
|
+
/** What changed between two lockfiles, by name+version. */
|
|
57
|
+
export declare function diffLock(prev: Lockfile, next: Lockfile): LockDiff;
|
|
58
|
+
/**
|
|
59
|
+
* Is everything the lockfile pins present in `installed`?
|
|
60
|
+
*
|
|
61
|
+
* The reproducibility check, and it is deliberately one-directional: EXTRA
|
|
62
|
+
* packages do not fail it. A workspace may legitimately hold something installed
|
|
63
|
+
* outside the lock (a local experiment, a global install), and failing on that
|
|
64
|
+
* would make the check useless in practice. What must never pass is a MISSING or
|
|
65
|
+
* differently-versioned pin.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isSatisfiedBy(lock: Lockfile, installed: readonly {
|
|
68
|
+
name: string;
|
|
69
|
+
version: string;
|
|
70
|
+
}[]): boolean;
|
|
71
|
+
/** The pins absent from `installed` — what an `install --frozen` would fetch. */
|
|
72
|
+
export declare function missingFrom(lock: Lockfile, installed: readonly {
|
|
73
|
+
name: string;
|
|
74
|
+
version: string;
|
|
75
|
+
}[]): LockedPackage[];
|
|
76
|
+
/** `name@version` refs for the pins, in install order — what a caller feeds back
|
|
77
|
+
* to the installer to reproduce the set. */
|
|
78
|
+
export declare function lockRefs(lock: Lockfile): string[];
|
|
79
|
+
//# sourceMappingURL=lockfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../install/lockfile.ts"],"names":[],"mappings":"AAoBA;;sEAEsE;AACtE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB;;wCAEoC;IACpC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,eAAe,EAAE,CAAC,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAC3C,6DAA6D;AAC7D,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAExD,wBAAgB,SAAS,IAAI,QAAQ,CAEpC;AAwBD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,QAAQ,CAKtF;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAKrE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAMpD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAqBvD;AAED,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,gCAAgC;IAChC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAOjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,OAAO,CAG9G;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,aAAa,EAAE,CAGpH;AAED;4CAC4C;AAC5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAEjD"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/* The install lockfile — what makes "the same inputs produce the same agents".
|
|
2
|
+
*
|
|
3
|
+
* `prompd.json` records what a workspace ASKED for. That is a manifest, and it is
|
|
4
|
+
* not enough to reproduce an install: it does not pin the transitive closure, so
|
|
5
|
+
* two installs from the same manifest can differ the moment anything upstream
|
|
6
|
+
* publishes. The lockfile records what was actually RESOLVED — every package,
|
|
7
|
+
* exact version, and the files it wrote.
|
|
8
|
+
*
|
|
9
|
+
* Pure, and deliberately kernel-side: it has no dependency on @prompd/core (which
|
|
10
|
+
* the kernel may not import) and no filesystem of its own, so the same format
|
|
11
|
+
* serves the browser installer today and a session-scoped node installer later.
|
|
12
|
+
* The caller supplies what was installed; this owns the FORMAT and the
|
|
13
|
+
* reproducibility rules.
|
|
14
|
+
*
|
|
15
|
+
* The load-bearing property is CANONICAL SERIALIZATION: the same set of packages
|
|
16
|
+
* must serialize byte-for-byte identically regardless of the order they were
|
|
17
|
+
* installed in. Without that, a lockfile churns in version control on every
|
|
18
|
+
* install and stops being reviewable — which is most of why anyone keeps one.
|
|
19
|
+
*/
|
|
20
|
+
export const LOCKFILE_VERSION = 1;
|
|
21
|
+
/** Conventional location, alongside the manifest it pins. */
|
|
22
|
+
export const LOCKFILE_PATH = '.prompd/prompd-lock.json';
|
|
23
|
+
export function emptyLock() {
|
|
24
|
+
return { lockfileVersion: LOCKFILE_VERSION, packages: [] };
|
|
25
|
+
}
|
|
26
|
+
/** Identity of a locked package: name AND version. Two versions of the same
|
|
27
|
+
* package can legitimately coexist (core installs to a per-version directory), so
|
|
28
|
+
* keying on name alone would silently drop one. */
|
|
29
|
+
function keyOf(p) {
|
|
30
|
+
return `${p.name}@${p.version}`;
|
|
31
|
+
}
|
|
32
|
+
/** Order packages deterministically. Name first, then version, so a lockfile
|
|
33
|
+
* reads like an inventory and diffs line-by-line. */
|
|
34
|
+
function byIdentity(a, b) {
|
|
35
|
+
return a.name === b.name ? a.version.localeCompare(b.version) : a.name.localeCompare(b.name);
|
|
36
|
+
}
|
|
37
|
+
function normalize(p) {
|
|
38
|
+
return {
|
|
39
|
+
name: p.name,
|
|
40
|
+
version: p.version,
|
|
41
|
+
type: p.type,
|
|
42
|
+
...(p.files && p.files.length ? { files: [...p.files].sort() } : {}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add or replace entries, returning a NEW lockfile.
|
|
47
|
+
*
|
|
48
|
+
* Replacement is by name+version, so re-installing the same version updates its
|
|
49
|
+
* file list in place rather than duplicating it, while a genuinely new version
|
|
50
|
+
* is added alongside — matching how core installs to a per-version directory.
|
|
51
|
+
*/
|
|
52
|
+
export function withPackages(lock, added) {
|
|
53
|
+
const merged = new Map();
|
|
54
|
+
for (const p of lock.packages)
|
|
55
|
+
merged.set(keyOf(p), normalize(p));
|
|
56
|
+
for (const p of added)
|
|
57
|
+
merged.set(keyOf(p), normalize(p));
|
|
58
|
+
return { lockfileVersion: LOCKFILE_VERSION, packages: [...merged.values()].sort(byIdentity) };
|
|
59
|
+
}
|
|
60
|
+
/** Drop every version of a package by name — the uninstall counterpart. */
|
|
61
|
+
export function withoutPackage(lock, name) {
|
|
62
|
+
return {
|
|
63
|
+
lockfileVersion: LOCKFILE_VERSION,
|
|
64
|
+
packages: lock.packages.filter((p) => p.name !== name).map(normalize).sort(byIdentity),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Canonical text form. Key order is fixed by construction (the object literals in
|
|
69
|
+
* `normalize`), packages are sorted, and the file ends with a newline — so the
|
|
70
|
+
* same install set always produces the same bytes.
|
|
71
|
+
*/
|
|
72
|
+
export function serializeLock(lock) {
|
|
73
|
+
const canonical = {
|
|
74
|
+
lockfileVersion: LOCKFILE_VERSION,
|
|
75
|
+
packages: [...lock.packages].map(normalize).sort(byIdentity),
|
|
76
|
+
};
|
|
77
|
+
return JSON.stringify(canonical, null, 2) + '\n';
|
|
78
|
+
}
|
|
79
|
+
function isRecord(v) {
|
|
80
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Parse a lockfile, or null when the text is not one.
|
|
84
|
+
*
|
|
85
|
+
* Tolerant of unknown package TYPES (the registry may serve a kind this build
|
|
86
|
+
* predates, and dropping it would silently un-pin a dependency) but strict about
|
|
87
|
+
* name and version, since an entry missing either cannot pin anything and is
|
|
88
|
+
* worse than absent. A future lockfileVersion returns null rather than being
|
|
89
|
+
* misread by rules that no longer apply.
|
|
90
|
+
*/
|
|
91
|
+
export function parseLock(text) {
|
|
92
|
+
let parsed;
|
|
93
|
+
try {
|
|
94
|
+
parsed = JSON.parse(text);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
if (!isRecord(parsed))
|
|
100
|
+
return null;
|
|
101
|
+
if (parsed.lockfileVersion !== LOCKFILE_VERSION)
|
|
102
|
+
return null;
|
|
103
|
+
if (!Array.isArray(parsed.packages))
|
|
104
|
+
return null;
|
|
105
|
+
const packages = [];
|
|
106
|
+
for (const raw of parsed.packages) {
|
|
107
|
+
if (!isRecord(raw))
|
|
108
|
+
continue;
|
|
109
|
+
const { name, version, type, files } = raw;
|
|
110
|
+
if (typeof name !== 'string' || !name)
|
|
111
|
+
continue;
|
|
112
|
+
if (typeof version !== 'string' || !version)
|
|
113
|
+
continue;
|
|
114
|
+
packages.push(normalize({
|
|
115
|
+
name,
|
|
116
|
+
version,
|
|
117
|
+
type: typeof type === 'string' ? type : 'package',
|
|
118
|
+
...(Array.isArray(files) ? { files: files.filter((f) => typeof f === 'string') } : {}),
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
return { lockfileVersion: LOCKFILE_VERSION, packages: packages.sort(byIdentity) };
|
|
122
|
+
}
|
|
123
|
+
/** What changed between two lockfiles, by name+version. */
|
|
124
|
+
export function diffLock(prev, next) {
|
|
125
|
+
const before = new Set(prev.packages.map(keyOf));
|
|
126
|
+
const after = new Set(next.packages.map(keyOf));
|
|
127
|
+
return {
|
|
128
|
+
added: next.packages.filter((p) => !before.has(keyOf(p))).sort(byIdentity),
|
|
129
|
+
removed: prev.packages.filter((p) => !after.has(keyOf(p))).sort(byIdentity),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Is everything the lockfile pins present in `installed`?
|
|
134
|
+
*
|
|
135
|
+
* The reproducibility check, and it is deliberately one-directional: EXTRA
|
|
136
|
+
* packages do not fail it. A workspace may legitimately hold something installed
|
|
137
|
+
* outside the lock (a local experiment, a global install), and failing on that
|
|
138
|
+
* would make the check useless in practice. What must never pass is a MISSING or
|
|
139
|
+
* differently-versioned pin.
|
|
140
|
+
*/
|
|
141
|
+
export function isSatisfiedBy(lock, installed) {
|
|
142
|
+
const have = new Set(installed.map(keyOf));
|
|
143
|
+
return lock.packages.every((p) => have.has(keyOf(p)));
|
|
144
|
+
}
|
|
145
|
+
/** The pins absent from `installed` — what an `install --frozen` would fetch. */
|
|
146
|
+
export function missingFrom(lock, installed) {
|
|
147
|
+
const have = new Set(installed.map(keyOf));
|
|
148
|
+
return lock.packages.filter((p) => !have.has(keyOf(p))).sort(byIdentity);
|
|
149
|
+
}
|
|
150
|
+
/** `name@version` refs for the pins, in install order — what a caller feeds back
|
|
151
|
+
* to the installer to reproduce the set. */
|
|
152
|
+
export function lockRefs(lock) {
|
|
153
|
+
return [...lock.packages].sort(byIdentity).map(keyOf);
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=lockfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../install/lockfile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FileService } from '@corenel/protocol';
|
|
2
|
+
/** Structural mirror of @prompd/core's PackageStore. */
|
|
3
|
+
export interface PackageStoreLike {
|
|
4
|
+
writeFile(path: string, content: string): void | Promise<void>;
|
|
5
|
+
writeBytes?(path: string, bytes: Uint8Array): void | Promise<void>;
|
|
6
|
+
removeDir?(path: string): void | Promise<void>;
|
|
7
|
+
removeFile?(path: string): void | Promise<void>;
|
|
8
|
+
readFile?(path: string): Promise<string | null> | string | null;
|
|
9
|
+
readBytes?(path: string): Promise<Uint8Array> | Uint8Array;
|
|
10
|
+
readdir?(path: string): Promise<string[]> | string[];
|
|
11
|
+
}
|
|
12
|
+
export declare function fileServicePackageStore(fs: FileService): PackageStoreLike;
|
|
13
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../install/store.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IAChE,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IAC3D,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;CACtD;AAeD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,WAAW,GAAG,gBAAgB,CAwBzE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Treat only "the path wasn't there" as ignorable on remove.
|
|
3
|
+
*
|
|
4
|
+
* Any other failure — a read-only source, a sidecar whose remove is unsupported,
|
|
5
|
+
* a permissions error — must surface. Swallowing those would leave a package
|
|
6
|
+
* half-removed while reporting success, which is worse than failing.
|
|
7
|
+
*/
|
|
8
|
+
function isNotFound(e) {
|
|
9
|
+
const name = e?.name;
|
|
10
|
+
const msg = String(e?.message ?? e);
|
|
11
|
+
return name === 'NotFoundError' || /not\s*found|no such|enoent/i.test(msg);
|
|
12
|
+
}
|
|
13
|
+
export function fileServicePackageStore(fs) {
|
|
14
|
+
const remove = (path) => fs.remove(path).catch((e) => { if (!isNotFound(e))
|
|
15
|
+
throw e; });
|
|
16
|
+
return {
|
|
17
|
+
writeFile: (path, content) => fs.write(path, content),
|
|
18
|
+
// Present only when the backend supports binary — core feature-detects it,
|
|
19
|
+
// and advertising a method that throws is worse than not advertising it.
|
|
20
|
+
...(fs.writeBytes ? { writeBytes: (path, bytes) => fs.writeBytes(path, bytes) } : {}),
|
|
21
|
+
removeDir: remove,
|
|
22
|
+
removeFile: remove,
|
|
23
|
+
readFile: (path) => fs.read(path).catch(() => null),
|
|
24
|
+
...(fs.readBytes ? { readBytes: (path) => fs.readBytes(path) } : {}),
|
|
25
|
+
readdir: async (path) => {
|
|
26
|
+
try {
|
|
27
|
+
const nodes = fs.listDir ? await fs.listDir(path) : await fs.list(path);
|
|
28
|
+
return nodes.map((n) => n.name);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// An absent directory is the common case here (a type dir that has never
|
|
32
|
+
// been installed into), not an error worth propagating.
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../install/store.ts"],"names":[],"mappings":"AA6BA;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,CAAU;IAC5B,MAAM,IAAI,GAAI,CAAuB,EAAE,IAAI,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAE,CAA0B,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,KAAK,eAAe,IAAI,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EAAe;IACrD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAiB,EAAE,CAC7C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1E,OAAO;QACL,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;QACrD,2EAA2E;QAC3E,yEAAyE;QACzE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,IAAY,EAAE,KAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,UAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACnD,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,SAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;gBACzE,wDAAwD;gBACxD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/log.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../log.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../log.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAOjD;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAE7C"}
|
package/dist/log.js
CHANGED
|
@@ -6,7 +6,12 @@
|
|
|
6
6
|
let enabled = true;
|
|
7
7
|
export function setAgentLogging(on) {
|
|
8
8
|
enabled = on;
|
|
9
|
-
|
|
9
|
+
// Announce only when turning ON. A call that silences tracing must not itself
|
|
10
|
+
// write a line: hosts that disable it are usually doing so BECAUSE stdout is
|
|
11
|
+
// a data channel (a CLI answer, a JSON Lines event stream), and one stray
|
|
12
|
+
// line there is a parse error in whatever is reading.
|
|
13
|
+
if (on)
|
|
14
|
+
console.log('[agent] logging enabled');
|
|
10
15
|
}
|
|
11
16
|
export function isAgentLogging() {
|
|
12
17
|
return enabled;
|
package/dist/log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../log.ts"],"names":[],"mappings":"AAAA;;;;iEAIiE;AACjE,IAAI,OAAO,GAAG,IAAI,CAAC;AAEnB,MAAM,UAAU,eAAe,CAAC,EAAW;IACzC,OAAO,GAAG,EAAE,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../log.ts"],"names":[],"mappings":"AAAA;;;;iEAIiE;AACjE,IAAI,OAAO,GAAG,IAAI,CAAC;AAEnB,MAAM,UAAU,eAAe,CAAC,EAAW;IACzC,OAAO,GAAG,EAAE,CAAC;IACb,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,sDAAsD;IACtD,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAG,IAAe;IACrC,IAAI,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,qDAAqD;AACrD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAA6C,CAAC,eAAe,GAAG,eAAe,CAAC;AACnF,CAAC"}
|
package/dist/prompts/host.d.ts
CHANGED
|
@@ -21,6 +21,10 @@ export interface PromptHost {
|
|
|
21
21
|
compileTemplate(path: string, liveSrc: string, values: Record<string, unknown>): Promise<CompileOutput>;
|
|
22
22
|
/** The app/site index injected into the help-system prompt. */
|
|
23
23
|
siteIndex(): string;
|
|
24
|
+
/** Product name of the host app ("Prompd", "Corenel"). The agent introduces
|
|
25
|
+
* itself with this, so a shared prompt cannot hardcode either brand. Optional:
|
|
26
|
+
* a host that does not set one gets the neutral default. */
|
|
27
|
+
appName?(): string;
|
|
24
28
|
}
|
|
25
29
|
/** Wire the host bits at boot (the app calls this before composing). */
|
|
26
30
|
export declare function setPromptHost(h: PromptHost): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../prompts/host.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AAChE,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAAG,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAElD,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,SAAS,EAAE,WAAW,CAAC;IACvB,+DAA+D;IAC/D,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,uDAAuD;IACvD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACpC,yEAAyE;IACzE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF;gEAC4D;IAC5D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxG,+DAA+D;IAC/D,SAAS,IAAI,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../prompts/host.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AAChE,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAAG,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAElD,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,SAAS,EAAE,WAAW,CAAC;IACvB,+DAA+D;IAC/D,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,uDAAuD;IACvD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACpC,yEAAyE;IACzE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF;gEAC4D;IAC5D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxG,+DAA+D;IAC/D,SAAS,IAAI,MAAM,CAAC;IACpB;;gEAE4D;IAC5D,OAAO,CAAC,IAAI,MAAM,CAAC;CACpB;AAID,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAc;AAEhE,wBAAgB,UAAU,IAAI,UAAU,CAGvC;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,IAAI,WAAW,CAAmC"}
|
package/dist/prompts/host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../prompts/host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../prompts/host.ts"],"names":[],"mappings":"AAqCA,IAAI,IAAI,GAAsB,IAAI,CAAC;AAEnC,wEAAwE;AACxE,MAAM,UAAU,aAAa,CAAC,CAAa,IAAU,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAEhE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,KAAkB,OAAO,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC"}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { TOOLS_MARKER } from './toolsMarker';
|
|
1
2
|
/** Compile a prompt body through @prompd/core (so {{ params }} resolve). Returns
|
|
2
3
|
* the body unchanged on any error — harness prompts must always produce text. */
|
|
3
4
|
export declare function compilePromptBody(body: string, params?: Record<string, unknown>): Promise<string>;
|
|
@@ -24,12 +25,17 @@ export interface ComposeArgs {
|
|
|
24
25
|
name: string;
|
|
25
26
|
description: string;
|
|
26
27
|
}>;
|
|
28
|
+
/** Pre-formatted {{ tools }} text (e.g. a TOOLS_MARKER for worker-side fill); wins over `tools`. */
|
|
29
|
+
toolsText?: string;
|
|
27
30
|
/** Include the mode hint (modes/<mode>.md). Default true. */
|
|
28
31
|
includeMode?: boolean;
|
|
29
32
|
/** Include the tool-guidance block (tools/guidance.md). Default true. */
|
|
30
33
|
includeToolGuidance?: boolean;
|
|
31
34
|
/** Extra params for @prompd/core templating of the system prompd. */
|
|
32
35
|
params?: Record<string, unknown>;
|
|
36
|
+
/** Optional host hook: the merged MEMORY.md index (both scopes). Injected into
|
|
37
|
+
* file_context so the agent knows what it can recall. Absent/empty -> no block. */
|
|
38
|
+
memoryIndex?: () => Promise<string>;
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
35
41
|
* Assemble the agent system prompt. The system prompt is the config file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;iFACiF;AACjF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe3G;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1G;AAED,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;0EACsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;qDACiD;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;uFACmF;IACnF,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAOD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC3E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3E"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -5,6 +5,8 @@ import { readConfig, seedConfig } from './config';
|
|
|
5
5
|
import { promptHost } from './host';
|
|
6
6
|
import { enabledSkillInstructions } from '../skills';
|
|
7
7
|
import { normalizeFilePath } from '@corenel/protocol';
|
|
8
|
+
import { formatToolLines } from './toolsMarker';
|
|
9
|
+
export { TOOLS_MARKER } from './toolsMarker';
|
|
8
10
|
/** Compile a prompt body through @prompd/core (so {{ params }} resolve). Returns
|
|
9
11
|
* the body unchanged on any error — harness prompts must always produce text. */
|
|
10
12
|
export async function compilePromptBody(body, params = {}) {
|
|
@@ -47,9 +49,7 @@ export async function compileConfigTemplate(path, params) {
|
|
|
47
49
|
}
|
|
48
50
|
/** Render tool definitions as a markdown list for the {{ tools }} parameter. */
|
|
49
51
|
function formatTools(tools) {
|
|
50
|
-
|
|
51
|
-
return '';
|
|
52
|
-
return tools.map((t) => `- \`${t.name}\`: ${t.description}`).join('\n');
|
|
52
|
+
return tools && tools.length ? formatToolLines(tools) : '';
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* Assemble the agent system prompt. The system prompt is the config file
|
|
@@ -80,13 +80,23 @@ export async function composeAgentSystem(args) {
|
|
|
80
80
|
// Enabled skills inject their SKILL.md as an extra context block (with a gated-
|
|
81
81
|
// scripts note). Read-only + best-effort — a skills failure never breaks compose.
|
|
82
82
|
const skillsBlock = await enabledSkillInstructions().catch(() => '');
|
|
83
|
+
// Merged memory index (both scopes) — a host-provided hook so the agent can see
|
|
84
|
+
// what it has saved. Best-effort: a memory read failure never breaks compose.
|
|
85
|
+
const memoryIdx = args.memoryIndex ? await args.memoryIndex().catch(() => '') : '';
|
|
86
|
+
const memoryBlock = memoryIdx.trim()
|
|
87
|
+
? `## Memory\nNotes you've saved. Call recall_memory to read one in full; save_memory to add one.\n\n${memoryIdx.trim()}`
|
|
88
|
+
: '';
|
|
83
89
|
return compileConfigTemplate(systemPath, {
|
|
90
|
+
// Who the agent says it IS. Injected rather than written into the prompt,
|
|
91
|
+
// because the same shipped default is seeded into every host's config
|
|
92
|
+
// workspace and each one carries a different product name.
|
|
93
|
+
app: promptHost().appName?.() || 'Prompd',
|
|
84
94
|
persona: persona.trim(),
|
|
85
95
|
mode,
|
|
86
96
|
mode_hint,
|
|
87
97
|
tool_guidance,
|
|
88
|
-
tools: formatTools(args.tools),
|
|
89
|
-
file_context: [(args.contextText || '').trim(), skillsBlock].filter(Boolean).join('\n\n'),
|
|
98
|
+
tools: args.toolsText ?? formatTools(args.tools),
|
|
99
|
+
file_context: [(args.contextText || '').trim(), memoryBlock, skillsBlock].filter(Boolean).join('\n\n'),
|
|
90
100
|
...(args.params || {}),
|
|
91
101
|
});
|
|
92
102
|
}
|
|
@@ -98,7 +108,7 @@ export async function composeAgentSystem(args) {
|
|
|
98
108
|
* into a new session).
|
|
99
109
|
*/
|
|
100
110
|
export async function composeHelpSystem(recentSummary = '') {
|
|
101
|
-
const helpTpl = await readConfig('
|
|
111
|
+
const helpTpl = await readConfig('systems/help-system.md');
|
|
102
112
|
const app_index = promptHost().siteIndex();
|
|
103
113
|
return compilePromptBody(helpTpl, { app_index, recent_summary: recentSummary });
|
|
104
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"AAAA;;mEAEmE;AACnE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.generated.d.ts","sourceRoot":"","sources":["../../../prompts/library/defaults.generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"defaults.generated.d.ts","sourceRoot":"","sources":["../../../prompts/library/defaults.generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4C/C,CAAC"}
|