@corenel/harness 0.4.0 → 0.5.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.
Files changed (53) hide show
  1. package/LICENSE +93 -0
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +10 -1
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/core/budget.d.ts +6 -0
  6. package/dist/core/budget.d.ts.map +1 -1
  7. package/dist/core/budget.js +16 -0
  8. package/dist/core/budget.js.map +1 -1
  9. package/dist/core/factFile.d.ts +25 -0
  10. package/dist/core/factFile.d.ts.map +1 -0
  11. package/dist/core/factFile.js +59 -0
  12. package/dist/core/factFile.js.map +1 -0
  13. package/dist/core/loop.d.ts +18 -0
  14. package/dist/core/loop.d.ts.map +1 -1
  15. package/dist/core/loop.js +50 -2
  16. package/dist/core/loop.js.map +1 -1
  17. package/dist/core/recovery.d.ts +4 -3
  18. package/dist/core/recovery.d.ts.map +1 -1
  19. package/dist/core/recovery.js +20 -0
  20. package/dist/core/recovery.js.map +1 -1
  21. package/dist/prompts/config.d.ts +14 -0
  22. package/dist/prompts/config.d.ts.map +1 -1
  23. package/dist/prompts/config.js +25 -0
  24. package/dist/prompts/config.js.map +1 -1
  25. package/dist/prompts/host.d.ts +14 -0
  26. package/dist/prompts/host.d.ts.map +1 -1
  27. package/dist/prompts/host.js.map +1 -1
  28. package/dist/prompts/library/defaults.generated.js +4 -4
  29. package/dist/prompts/library/defaults.generated.js.map +1 -1
  30. package/dist/providers/gateway.d.ts.map +1 -1
  31. package/dist/providers/gateway.js +11 -1
  32. package/dist/providers/gateway.js.map +1 -1
  33. package/dist/redact.d.ts +10 -0
  34. package/dist/redact.d.ts.map +1 -0
  35. package/dist/redact.js +53 -0
  36. package/dist/redact.js.map +1 -0
  37. package/dist/sidecar/host.d.ts +81 -2
  38. package/dist/sidecar/host.d.ts.map +1 -1
  39. package/dist/sidecar/host.js +175 -0
  40. package/dist/sidecar/host.js.map +1 -1
  41. package/dist/sidecar/server.d.ts +51 -1
  42. package/dist/sidecar/server.d.ts.map +1 -1
  43. package/dist/sidecar/server.js +207 -2
  44. package/dist/sidecar/server.js.map +1 -1
  45. package/dist/skills.d.ts +17 -1
  46. package/dist/skills.d.ts.map +1 -1
  47. package/dist/skills.js +81 -19
  48. package/dist/skills.js.map +1 -1
  49. package/dist/tools/roomTools.d.ts +32 -0
  50. package/dist/tools/roomTools.d.ts.map +1 -0
  51. package/dist/tools/roomTools.js +88 -0
  52. package/dist/tools/roomTools.js.map +1 -0
  53. package/package.json +3 -2
package/dist/skills.js CHANGED
@@ -17,8 +17,9 @@
17
17
  * hand-rolled copy here. The kernel stays format/vendor-agnostic: it never imports
18
18
  * @prompd/core directly (see kernelBoundary.test).
19
19
  */
20
- import { configWorkspace } from './prompts/host.js';
20
+ import { configWorkspace, promptHost } from './prompts/host.js';
21
21
  import { seedConfig } from './prompts/config.js';
22
+ import { PROMPD_INSTALL_DIR } from '@corenel/protocol';
22
23
  let extractPdpkg = null;
23
24
  export function setPdpkgExtractor(fn) { extractPdpkg = fn; }
24
25
  const ROOT = 'skills';
@@ -114,6 +115,14 @@ export async function installSkillZip(bytes, fallbackName = 'skill') {
114
115
  return name;
115
116
  }
116
117
  export async function removeSkill(name) {
118
+ /* Installed skills are managed by `prompd install`/`uninstall` and live in a
119
+ * PROTECTED directory. Removing one here would delete a file the installer
120
+ * still believes it owns, leaving its own record pointing at nothing.
121
+ * Refuses loudly: silently doing nothing would look like a broken button. */
122
+ const found = (await listSkills()).find((s) => s.name === name);
123
+ if (found?.readOnly) {
124
+ throw new Error(`"${name}" was installed from a package — remove it with \`prompd uninstall\`, not from here.`);
125
+ }
117
126
  // A SHIPPED default (CONFIG_DEFAULTS) re-seeds on the next reconcile — disable
118
127
  // is the effective "off" for those; the explicit disable below persists.
119
128
  await configWorkspace().remove(`${ROOT}/${safeName(name)}`).catch(() => { });
@@ -177,21 +186,35 @@ function flattenFiles(nodes) {
177
186
  }
178
187
  return out;
179
188
  }
180
- /** Every installed skill — a folder under config `skills/<name>/` holding its
181
- * instructions as SKILL.prmd (the config-native prompt format; SKILL.md also
182
- * accepted for packaged zips) plus optional scripts/resources. */
183
- export async function listSkills() {
184
- // Shipped skills (CONFIG_DEFAULTS `skills/...` entries) exist only after the
185
- // config workspace is seeded — make sure that's happened before listing, so a
186
- // fresh profile sees them on the first open of the skills drawer. Call-time
187
- // only: seeding at import time poisons fresh profiles (host not wired yet).
189
+ /** Installed skills live under the project's protected install dir. */
190
+ const INSTALLED_ROOT = `${PROMPD_INSTALL_DIR}/${ROOT}`;
191
+ /**
192
+ * The project workspace, when the host has one.
193
+ *
194
+ * Best-effort by design: `promptHost()` throws when nothing is wired (a unit
195
+ * test, a host mid-boot), and a skills list that explodes because no project is
196
+ * open would be worse than one that reports only the config skills — which is
197
+ * the truth in that situation.
198
+ */
199
+ function projectFiles() {
188
200
  try {
189
- await seedConfig();
201
+ return promptHost().projectWorkspace?.() ?? null;
190
202
  }
191
- catch { /* unseeded host — list what exists */ }
203
+ catch {
204
+ return null;
205
+ }
206
+ }
207
+ /** The FileService a skill's own files are read through. */
208
+ export function skillFiles(source) {
209
+ return source === 'installed' ? projectFiles() : configWorkspace();
210
+ }
211
+ /** Read one source's `skills/` tree into InstalledSkill records. */
212
+ async function listFrom(files, root, source) {
213
+ if (!files)
214
+ return [];
192
215
  let tree;
193
216
  try {
194
- tree = await configWorkspace().list(ROOT);
217
+ tree = await files.list(root);
195
218
  }
196
219
  catch {
197
220
  return [];
@@ -199,27 +222,60 @@ export async function listSkills() {
199
222
  const names = tree.filter((n) => n.kind === 'directory').map((n) => n.name);
200
223
  const out = [];
201
224
  for (const name of names) {
202
- const base = `${ROOT}/${name}/`;
225
+ const base = `${root}/${name}/`;
203
226
  const paths = flattenFiles(tree.find((n) => n.name === name)?.children || []);
204
227
  const rels = paths.map((p) => p.slice(base.length));
205
- // SKILL.prmd is the config-native instruction file; SKILL.md (packaged zips)
206
- // still counts. Prefer .prmd when both exist.
228
+ // SKILL.prmd is the config-native instruction file; SKILL.md is the
229
+ // packaged/published one. Prefer .prmd when both exist.
207
230
  const skillPath = paths.find((p) => p.slice(base.length).toLowerCase() === 'skill.prmd') ||
208
231
  paths.find((p) => p.slice(base.length).toLowerCase() === 'skill.md') ||
209
232
  null;
210
233
  let description;
211
234
  if (skillPath) {
212
235
  try {
213
- const fm = parseFrontmatter(await configWorkspace().read(skillPath));
236
+ const fm = parseFrontmatter(await files.read(skillPath));
214
237
  if (typeof fm.description === 'string')
215
238
  description = fm.description;
216
239
  }
217
240
  catch { /* ignore */ }
218
241
  }
219
242
  const scripts = rels.map(classifyScript).filter((s) => !!s);
220
- out.push({ name, description, instructions: skillPath, scripts, enabled: isSkillEnabled(name) });
243
+ out.push({
244
+ name,
245
+ description,
246
+ instructions: skillPath,
247
+ scripts,
248
+ enabled: isSkillEnabled(name),
249
+ source,
250
+ readOnly: source === 'installed',
251
+ });
221
252
  }
222
- return out.sort((a, b) => a.name.localeCompare(b.name));
253
+ return out;
254
+ }
255
+ /** Every installed skill — a folder under config `skills/<name>/` holding its
256
+ * instructions as SKILL.prmd (the config-native prompt format; SKILL.md also
257
+ * accepted for packaged zips) plus optional scripts/resources. */
258
+ export async function listSkills() {
259
+ // Shipped skills (CONFIG_DEFAULTS `skills/...` entries) exist only after the
260
+ // config workspace is seeded — make sure that's happened before listing, so a
261
+ // fresh profile sees them on the first open of the skills drawer. Call-time
262
+ // only: seeding at import time poisons fresh profiles (host not wired yet).
263
+ try {
264
+ await seedConfig();
265
+ }
266
+ catch { /* unseeded host — list what exists */ }
267
+ const authored = await listFrom(configWorkspace(), ROOT, 'config');
268
+ const installed = await listFrom(projectFiles(), INSTALLED_ROOT, 'installed');
269
+ /* AUTHORED WINS on a name collision. Same ordering policyResolve uses:
270
+ * what the user wrote beats what they installed. Dropping the installed copy
271
+ * rather than showing both keeps one name meaning one skill, so an enable
272
+ * toggle is never ambiguous about which it acts on. */
273
+ const byName = new Map();
274
+ for (const s of installed)
275
+ byName.set(s.name, s);
276
+ for (const s of authored)
277
+ byName.set(s.name, s);
278
+ return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
223
279
  }
224
280
  /** The combined instruction block for ENABLED skills — injected into the system
225
281
  * prompt. Includes an explicit note about any gated (non-JS) scripts so Corenel
@@ -231,8 +287,14 @@ export async function enabledSkillInstructions() {
231
287
  const blocks = [];
232
288
  for (const s of skills) {
233
289
  let body = '';
290
+ /* From the skill's OWN source. An installed skill's file lives in the
291
+ * project's .prompd/, which the config workspace cannot see -- reading it
292
+ * through configWorkspace() would silently skip every installed skill. */
293
+ const files = skillFiles(s.source);
294
+ if (!files)
295
+ continue;
234
296
  try {
235
- body = stripFrontmatter(await configWorkspace().read(s.instructions));
297
+ body = stripFrontmatter(await files.read(s.instructions));
236
298
  }
237
299
  catch {
238
300
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { AgentTool } from '@corenel/protocol';
2
+ export declare const ROOM_RUNSTATE_KEY = "room";
3
+ /** The tools that exist only inside a room, named once.
4
+ *
5
+ * A host offers these CONDITIONALLY -- only to a participant in a room -- which
6
+ * makes them subject to the offer-carries-grant rule
7
+ * (`grantOfferedTools`, packages/crew/offerGrants.ts): a policy that does not
8
+ * name them would otherwise leave a participant unable to hand over the floor
9
+ * or end the room, and every room would run to its turn cap.
10
+ *
11
+ * The grant site and the offer site must agree, so both read this. A test below
12
+ * pins it against what `makeRoomTools` actually returns. */
13
+ export declare const ROOM_TOOL_NAMES: readonly ["address_participant", "close_room"];
14
+ export interface RoomTurnOutcome {
15
+ /** The participant handed the floor, or null. */
16
+ addressed: string | null;
17
+ /** Set when this participant closed the room. */
18
+ close: {
19
+ reason: string;
20
+ } | null;
21
+ }
22
+ interface RoomToolOpts {
23
+ participants: {
24
+ id: string;
25
+ name: string;
26
+ }[];
27
+ meId: string;
28
+ }
29
+ export declare function readRoomOutcome(runState: Record<string, unknown> | undefined): RoomTurnOutcome;
30
+ export declare function makeRoomTools(opts: RoomToolOpts): AgentTool[];
31
+ export {};
32
+ //# sourceMappingURL=roomTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roomTools.d.ts","sourceRoot":"","sources":["../../tools/roomTools.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC;;;;;;;;;4DAS4D;AAC5D,eAAO,MAAM,eAAe,gDAAiD,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iDAAiD;IACjD,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAClC;AAED,UAAU,YAAY;IACpB,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd;AAcD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,eAAe,CAQ9F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,CAoD7D"}
@@ -0,0 +1,88 @@
1
+ export const ROOM_RUNSTATE_KEY = 'room';
2
+ /** The tools that exist only inside a room, named once.
3
+ *
4
+ * A host offers these CONDITIONALLY -- only to a participant in a room -- which
5
+ * makes them subject to the offer-carries-grant rule
6
+ * (`grantOfferedTools`, packages/crew/offerGrants.ts): a policy that does not
7
+ * name them would otherwise leave a participant unable to hand over the floor
8
+ * or end the room, and every room would run to its turn cap.
9
+ *
10
+ * The grant site and the offer site must agree, so both read this. A test below
11
+ * pins it against what `makeRoomTools` actually returns. */
12
+ export const ROOM_TOOL_NAMES = ['address_participant', 'close_room'];
13
+ function slot(ctx) {
14
+ const state = ctx.runState;
15
+ if (!state)
16
+ return { addressed: null, close: null };
17
+ const existing = state[ROOM_RUNSTATE_KEY];
18
+ if (existing && typeof existing === 'object')
19
+ return existing;
20
+ const fresh = { addressed: null, close: null };
21
+ state[ROOM_RUNSTATE_KEY] = fresh;
22
+ return fresh;
23
+ }
24
+ function str(v) { return typeof v === 'string' ? v.trim() : ''; }
25
+ export function readRoomOutcome(runState) {
26
+ const v = runState?.[ROOM_RUNSTATE_KEY];
27
+ if (!v || typeof v !== 'object')
28
+ return { addressed: null, close: null };
29
+ const o = v;
30
+ return {
31
+ addressed: typeof o.addressed === 'string' ? o.addressed : null,
32
+ close: o.close && typeof o.close.reason === 'string' ? { reason: o.close.reason } : null,
33
+ };
34
+ }
35
+ export function makeRoomTools(opts) {
36
+ const others = opts.participants.filter((p) => p.id !== opts.meId);
37
+ const list = others.map((p) => `${p.id} (${p.name})`).join(', ') || '(nobody else)';
38
+ return [
39
+ {
40
+ name: 'address_participant',
41
+ mutates: false,
42
+ description: 'Hand the floor to one other participant, who speaks next and once, after which the '
43
+ + `rotation resumes. You may address: ${list}.`,
44
+ parameters: {
45
+ type: 'object',
46
+ properties: {
47
+ participant: { type: 'string', description: `The participant id to address. One of: ${list}.` },
48
+ },
49
+ required: ['participant'],
50
+ },
51
+ async run(args, ctx) {
52
+ const id = str(args.participant);
53
+ if (!id)
54
+ return 'Provide the `participant` to address.';
55
+ if (id === opts.meId)
56
+ return 'You cannot address yourself; say your piece and stop.';
57
+ if (!others.some((p) => p.id === id)) {
58
+ return `"${id}" is not in this room. You may address: ${list}.`;
59
+ }
60
+ slot(ctx).addressed = id;
61
+ return `The floor goes to ${id} next.`;
62
+ },
63
+ },
64
+ {
65
+ name: 'close_room',
66
+ // Mutating: ending a shared conversation on everyone else's behalf is an
67
+ // effect, and a policy must be able to gate it.
68
+ mutates: true,
69
+ description: 'End this room, giving the reason it is done. Use it when the room has achieved what '
70
+ + 'it met to do; do not let it run to its cap instead.',
71
+ parameters: {
72
+ type: 'object',
73
+ properties: {
74
+ reason: { type: 'string', description: 'Why the room is finished. Recorded with the close.' },
75
+ },
76
+ required: ['reason'],
77
+ },
78
+ async run(args, ctx) {
79
+ const reason = str(args.reason);
80
+ if (!reason)
81
+ return 'Provide a `reason` -- a close with no reason cannot be reviewed later.';
82
+ slot(ctx).close = { reason };
83
+ return `Room closed: ${reason}`;
84
+ },
85
+ },
86
+ ];
87
+ }
88
+ //# sourceMappingURL=roomTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roomTools.js","sourceRoot":"","sources":["../../tools/roomTools.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC;;;;;;;;;4DAS4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,qBAAqB,EAAE,YAAY,CAAU,CAAC;AAc9E,SAAS,IAAI,CAAC,GAAgB;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAA2B,CAAC;IACjF,MAAM,KAAK,GAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChE,KAAK,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,GAAG,CAAC,CAAU,IAAY,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAElF,MAAM,UAAU,eAAe,CAAC,QAA6C;IAC3E,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzE,MAAM,CAAC,GAAG,CAA6B,CAAC;IACxC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAC/D,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;KACzF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAkB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;IAEpF,OAAO;QACL;YACE,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,KAAK;YACd,WAAW,EACT,qFAAqF;kBACnF,sCAAsC,IAAI,GAAG;YACjD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,IAAI,GAAG,EAAE;iBAChG;gBACD,QAAQ,EAAE,CAAC,aAAa,CAAC;aAC1B;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;gBACjB,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,IAAI,CAAC,EAAE;oBAAE,OAAO,uCAAuC,CAAC;gBACxD,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI;oBAAE,OAAO,uDAAuD,CAAC;gBACrF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBACrC,OAAO,IAAI,EAAE,2CAA2C,IAAI,GAAG,CAAC;gBAClE,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;gBACzB,OAAO,qBAAqB,EAAE,QAAQ,CAAC;YACzC,CAAC;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,yEAAyE;YACzE,gDAAgD;YAChD,OAAO,EAAE,IAAI;YACb,WAAW,EACT,sFAAsF;kBACpF,qDAAqD;YACzD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;iBAC9F;gBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;aACrB;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;gBACjB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChC,IAAI,CAAC,MAAM;oBAAE,OAAO,wEAAwE,CAAC;gBAC7F,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,CAAC;gBAC7B,OAAO,gBAAgB,MAAM,EAAE,CAAC;YAClC,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@corenel/harness",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
+ "license": "Elastic-2.0",
4
5
  "type": "module",
5
6
  "description": "Corenel — host-agnostic agent harness (kernel). The app resolves it via the `corenel` path alias (bypasses these exports entirely); vitest aliases it to source too. Everything else — node consumers like @corenel/cli, @corenel/term, @corenel/sidecar — resolves it through this workspace package via the exports map below, which points at dist/ unconditionally (not just at publish) so in-repo and published resolution are identical: a bundle that treats @corenel/harness as external (see packages/term/build.mjs) must see the SAME module instance node sees when it later resolves this package at runtime, and plain node cannot execute the raw .ts sources at all. Run `pnpm build` here (or let a dependent's prebuild do it) before relying on this package outside the app/vitest. NOTE: @xyflow/react and dagre are NOT dependencies here at all — this package has no .tsx files and imports neither. `react` IS a real (small) runtime dependency: `todos.ts` uses `useSyncExternalStore`. It is declared below as an OPTIONAL peer, not a hard dependency, so node-only consumers (cli/term/sidecar) aren't forced to install react; node consumers hoist it today only because something else in the tree happens to pull it in. Do not add @xyflow/react or dagre as dependencies/peers without testing a packed install end to end — an earlier attempt at that (before this package had any .tsx files) failed npm's peer resolution with ERESOLVE.",
6
7
  "exports": {
@@ -28,7 +29,7 @@
28
29
  "dependencies": {
29
30
  "openai": "^4.77.0",
30
31
  "yaml": "^2.8.3",
31
- "@corenel/protocol": "0.4.0"
32
+ "@corenel/protocol": "0.5.0"
32
33
  },
33
34
  "peerDependencies": {
34
35
  "react": "^18.0.0 || ^19.0.0"