@cogenta/agents 0.6.0 → 0.8.4

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 (92) hide show
  1. package/dist/agents/builtins.d.ts +1 -0
  2. package/dist/agents/builtins.d.ts.map +1 -1
  3. package/dist/agents/builtins.js +20 -0
  4. package/dist/agents/builtins.js.map +1 -1
  5. package/dist/agents/store.d.ts.map +1 -1
  6. package/dist/agents/store.js +157 -106
  7. package/dist/agents/store.js.map +1 -1
  8. package/dist/fs/lazy-directories.d.ts +14 -0
  9. package/dist/fs/lazy-directories.d.ts.map +1 -0
  10. package/dist/fs/lazy-directories.js +28 -0
  11. package/dist/fs/lazy-directories.js.map +1 -0
  12. package/dist/identity/context.d.ts +31 -1
  13. package/dist/identity/context.d.ts.map +1 -1
  14. package/dist/identity/context.js +10 -0
  15. package/dist/identity/context.js.map +1 -1
  16. package/dist/index.d.ts +4 -3
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +3 -3
  19. package/dist/index.js.map +1 -1
  20. package/dist/memory/file-store.d.ts.map +1 -1
  21. package/dist/memory/file-store.js +8 -7
  22. package/dist/memory/file-store.js.map +1 -1
  23. package/dist/progress/job-store.d.ts.map +1 -1
  24. package/dist/progress/job-store.js +7 -2
  25. package/dist/progress/job-store.js.map +1 -1
  26. package/dist/progress/types.d.ts +20 -1
  27. package/dist/progress/types.d.ts.map +1 -1
  28. package/dist/progress/types.js.map +1 -1
  29. package/dist/prompts/store.d.ts.map +1 -1
  30. package/dist/prompts/store.js +8 -7
  31. package/dist/prompts/store.js.map +1 -1
  32. package/dist/providers/image/openai.d.ts +8 -1
  33. package/dist/providers/image/openai.d.ts.map +1 -1
  34. package/dist/providers/image/openai.js +60 -6
  35. package/dist/providers/image/openai.js.map +1 -1
  36. package/dist/providers/resolve.d.ts +17 -0
  37. package/dist/providers/resolve.d.ts.map +1 -1
  38. package/dist/providers/resolve.js +39 -0
  39. package/dist/providers/resolve.js.map +1 -1
  40. package/dist/providers/store.d.ts +25 -0
  41. package/dist/providers/store.d.ts.map +1 -1
  42. package/dist/providers/store.js +38 -10
  43. package/dist/providers/store.js.map +1 -1
  44. package/dist/rag/reference-documents/store.d.ts +21 -0
  45. package/dist/rag/reference-documents/store.d.ts.map +1 -1
  46. package/dist/rag/reference-documents/store.js +14 -1
  47. package/dist/rag/reference-documents/store.js.map +1 -1
  48. package/dist/runtime/loop.d.ts.map +1 -1
  49. package/dist/runtime/loop.js +3 -3
  50. package/dist/runtime/loop.js.map +1 -1
  51. package/dist/site-plan/approval.d.ts +11 -2
  52. package/dist/site-plan/approval.d.ts.map +1 -1
  53. package/dist/site-plan/approval.js +25 -1
  54. package/dist/site-plan/approval.js.map +1 -1
  55. package/dist/site-plan/content-model.d.ts +2 -0
  56. package/dist/site-plan/content-model.d.ts.map +1 -1
  57. package/dist/site-plan/content-model.js +87 -22
  58. package/dist/site-plan/content-model.js.map +1 -1
  59. package/dist/site-plan/enforce.d.ts.map +1 -1
  60. package/dist/site-plan/enforce.js +26 -1
  61. package/dist/site-plan/enforce.js.map +1 -1
  62. package/dist/site-plan/skin-candidates.d.ts +13 -0
  63. package/dist/site-plan/skin-candidates.d.ts.map +1 -1
  64. package/dist/site-plan/skin-candidates.js +27 -3
  65. package/dist/site-plan/skin-candidates.js.map +1 -1
  66. package/dist/site-plan/types.d.ts +14 -1
  67. package/dist/site-plan/types.d.ts.map +1 -1
  68. package/dist/skills/file-store.d.ts.map +1 -1
  69. package/dist/skills/file-store.js +6 -5
  70. package/dist/skills/file-store.js.map +1 -1
  71. package/dist/skills/library.d.ts.map +1 -1
  72. package/dist/skills/library.js +10 -9
  73. package/dist/skills/library.js.map +1 -1
  74. package/dist/skin/generate.d.ts +14 -0
  75. package/dist/skin/generate.d.ts.map +1 -1
  76. package/dist/skin/generate.js +17 -2
  77. package/dist/skin/generate.js.map +1 -1
  78. package/dist/theme-creator/layout-classifier.d.ts +2 -0
  79. package/dist/theme-creator/layout-classifier.d.ts.map +1 -1
  80. package/dist/theme-creator/layout-classifier.js +19 -4
  81. package/dist/theme-creator/layout-classifier.js.map +1 -1
  82. package/dist/theme-creator/propose-theme.d.ts.map +1 -1
  83. package/dist/theme-creator/propose-theme.js +8 -2
  84. package/dist/theme-creator/propose-theme.js.map +1 -1
  85. package/dist/tools/core/media.d.ts +68 -1
  86. package/dist/tools/core/media.d.ts.map +1 -1
  87. package/dist/tools/core/media.js +57 -1
  88. package/dist/tools/core/media.js.map +1 -1
  89. package/dist/trace/file-store.d.ts.map +1 -1
  90. package/dist/trace/file-store.js +7 -6
  91. package/dist/trace/file-store.js.map +1 -1
  92. package/package.json +5 -5
@@ -37,6 +37,7 @@ export declare const SECURITY_AGENT_NAME = "Security Scanner";
37
37
  export declare const CONTENT_WATCH_AGENT_NAME = "Content Watch";
38
38
  export declare const SITE_MONITOR_AGENT_NAME = "Site Monitor";
39
39
  export declare const THEME_CREATOR_AGENT_NAME = "Cogenta Theme Creator";
40
+ export declare const PLUGIN_BUILDER_AGENT_NAME = "Cogenta Plugin Builder";
40
41
  export declare function builtinAgentSeeds(): readonly AgentDeclarationInput[];
41
42
  /**
42
43
  * Idempotent: called both by `create-cogenta` at install and defensively by
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/agents/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAe,MAAM,YAAY,CAAA;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAC9C,eAAO,MAAM,mBAAmB,qBAAqB,CAAA;AACrD,eAAO,MAAM,wBAAwB,kBAAkB,CAAA;AACvD,eAAO,MAAM,uBAAuB,iBAAiB,CAAA;AACrD,eAAO,MAAM,wBAAwB,0BAA0B,CAAA;AAK/D,wBAAgB,iBAAiB,IAAI,SAAS,qBAAqB,EAAE,CAiHpE;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASrF"}
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/agents/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAe,MAAM,YAAY,CAAA;AAE3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAC9C,eAAO,MAAM,mBAAmB,qBAAqB,CAAA;AACrD,eAAO,MAAM,wBAAwB,kBAAkB,CAAA;AACvD,eAAO,MAAM,uBAAuB,iBAAiB,CAAA;AACrD,eAAO,MAAM,wBAAwB,0BAA0B,CAAA;AAC/D,eAAO,MAAM,yBAAyB,2BAA2B,CAAA;AAKjE,wBAAgB,iBAAiB,IAAI,SAAS,qBAAqB,EAAE,CAoIpE;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASrF"}
@@ -36,6 +36,7 @@ export const SECURITY_AGENT_NAME = 'Security Scanner';
36
36
  export const CONTENT_WATCH_AGENT_NAME = 'Content Watch';
37
37
  export const SITE_MONITOR_AGENT_NAME = 'Site Monitor';
38
38
  export const THEME_CREATOR_AGENT_NAME = 'Cogenta Theme Creator';
39
+ export const PLUGIN_BUILDER_AGENT_NAME = 'Cogenta Plugin Builder';
39
40
  /** Passed to `AgentDeclarationInput.model` — every seed prefers the same provider/model names an operator is most likely to configure first; `agents/orchestrator.ts` never fails to resolve a provider just because the *name* differs from what the site has enabled, it only needs `providers/store.ts` to have configured at least one. */
40
41
  const DEFAULT_MODEL = { preferred: 'anthropic', fallback: 'openai' };
41
42
  export function builtinAgentSeeds() {
@@ -150,6 +151,25 @@ export function builtinAgentSeeds() {
150
151
  budget: { tokensPerDay: 100_000, callsPerHour: 20 },
151
152
  enabled: true,
152
153
  },
154
+ {
155
+ name: PLUGIN_BUILDER_AGENT_NAME,
156
+ identity: {
157
+ role: 'Writes a plugin for a feature this site does not have — real JavaScript, into a sandbox, never into the installed plugins. A plugin reacts to content events, serves its own page under /_cogenta/plugins/<name>, or runs on a cadence, inside an isolated worker holding only the capabilities a person granted it.',
158
+ objectives: [
159
+ 'Read what the sandbox already holds (plugin.read_sandbox_file with no path) before writing anything into it.',
160
+ 'Write the manifest and the code for real, one file per call, with plugin.write_sandbox_file — never a description of the files.',
161
+ 'Call plugin.check_sandbox and fix exactly what it names: it validates the manifest, evaluates the code in the real isolated worker with nothing granted, and checks that every declared event, route and schedule has its handler.',
162
+ 'Ask for the fewest capabilities that do the job, naming a collection where that narrows it (content.write_draft:article), and say plainly when a request would need a capability nothing implements.',
163
+ 'Stop once the sandbox checks out, and say that a person installs it from the Plugins screen — there is no deploy tool, and claiming otherwise would be false.',
164
+ ],
165
+ style: 'Plain, specific, no filler; name what the plugin does and what it asks for.',
166
+ },
167
+ model: DEFAULT_MODEL,
168
+ tools: ['plugin.write_sandbox_file', 'plugin.read_sandbox_file', 'plugin.check_sandbox'],
169
+ autonomy: { default: 'propose' },
170
+ budget: { tokensPerDay: 120_000, callsPerHour: 20 },
171
+ enabled: true,
172
+ },
153
173
  ];
154
174
  }
155
175
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/agents/builtins.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAA;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAA;AACrD,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAA;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AACrD,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAA;AAE/D,+UAA+U;AAC/U,MAAM,aAAa,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAW,CAAA;AAE7E,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL;YACE,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE;gBACR,IAAI,EAAE,gMAAgM;gBACtM,UAAU,EAAE;oBACV,2FAA2F;oBAC3F,4HAA4H;oBAC5H,yEAAyE;iBAC1E;gBACD,KAAK,EAAE,gEAAgE;aACxE;YACD,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE;gBACL,cAAc;gBACd,mEAAmE;gBACnE,8DAA8D;gBAC9D,kEAAkE;gBAClE,uDAAuD;gBACvD,qBAAqB;gBACrB,cAAc;gBACd,qEAAqE;gBACrE,oEAAoE;gBACpE,8DAA8D;gBAC9D,iEAAiE;gBACjE,oEAAoE;gBACpE,gBAAgB;gBAChB,qBAAqB;gBACrB,iBAAiB;gBACjB,gBAAgB;gBAChB,YAAY;gBACZ,aAAa;gBACb,kBAAkB;gBAClB,uBAAuB;aACxB;YACD,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAChC,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE;YACnD,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;YACzC,OAAO,EAAE,IAAI;SACd;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,iJAAiJ;gBACvJ,UAAU,EAAE;oBACV,kFAAkF;oBAClF,2CAA2C;iBAC5C;gBACD,KAAK,EAAE,uCAAuC;aAC/C;YACD,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;YACpC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAChC,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;YAClD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE;gBACR,IAAI,EAAE,+LAA+L;gBACrM,UAAU,EAAE;oBACV,6DAA6D;oBAC7D,0GAA0G;iBAC3G;gBACD,KAAK,EAAE,8BAA8B;aACtC;YACD,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,CAAC,cAAc,EAAE,qBAAqB,CAAC;YAC9C,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAChC,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;YAClD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE;gBACR,IAAI,EAAE,sMAAsM;gBAC5M,UAAU,EAAE;oBACV,oEAAoE;oBACpE,4HAA4H;oBAC5H,iMAAiM;oBACjM,yKAAyK;iBAC1K;gBACD,KAAK,EAAE,uCAAuC;aAC/C;YACD,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,CAAC;YACzF,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAChC,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;YAClD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE;gBACR,IAAI,EAAE,6fAA6f;gBACngB,UAAU,EAAE;oBACV,oOAAoO;oBACpO,qUAAqU;oBACrU,wFAAwF;oBACxF,sOAAsO;iBACvO;gBACD,KAAK,EAAE,mEAAmE;aAC3E;YACD,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;YAC1D,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAChC,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE;YACnD,OAAO,EAAE,IAAI;SACd;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAA4B;IACpE,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aACrD,CAAC;YACJ,MAAM,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACzC,MAAM,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,CAAC,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,CAAU,CAAA;AAE/F,KAAK,UAAU,kBAAkB,CAC/B,KAA4B,EAC5B,QAAqB;IAErB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAM;IACpD,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACrF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAChC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,sBAAsB,CACnC,KAA4B,EAC5B,QAAqB;IAErB,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAwB;QAAE,OAAM;IACtD,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAAE,OAAM;IAC/D,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAChC,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;KACvD,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/agents/builtins.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/agents/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/agents/store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,31 @@
1
- import { mkdir, readdir, readFile, rm, writeFile } from 'node:fs/promises';
1
+ import { randomUUID } from 'node:crypto';
2
+ import { readdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
2
3
  import { join } from 'node:path';
3
4
  import { CogentaError } from '@cogenta/core';
5
+ import { lazyDirectories } from '../fs/lazy-directories.js';
4
6
  import { parseIdentityMarkdown, renderIdentityMarkdown } from '../identity/markdown.js';
7
+ /**
8
+ * Writes a file so that a reader never sees half of it.
9
+ *
10
+ * `writeFile` truncates the target and then fills it, so a concurrent
11
+ * `readFile` can land in between and get "Unterminated string in JSON" — which
12
+ * is exactly what `cogenta serve` did when an admin changed an agent while the
13
+ * runtime was reading the same record: the PATCH answered 500 about one run in
14
+ * three on CI. Writing beside it and renaming over it is atomic on every
15
+ * filesystem this project targets, so a reader sees the old record or the new
16
+ * one and never a torn one.
17
+ */
18
+ async function writeFileAtomic(path, data) {
19
+ const temporary = `${path}.${randomUUID()}.tmp`;
20
+ await writeFile(temporary, data, 'utf8');
21
+ try {
22
+ await rename(temporary, path);
23
+ }
24
+ catch (error) {
25
+ await rm(temporary, { force: true });
26
+ throw error;
27
+ }
28
+ }
5
29
  const COMBINING_DIACRITICS = /[\u0300-\u036f]/gu;
6
30
  function slugify(name) {
7
31
  const slug = name
@@ -23,10 +47,7 @@ function agentUnknown(name) {
23
47
  export function createFileAgentDeclarationStore(options) {
24
48
  const now = options.now ?? (() => new Date());
25
49
  const identitiesDir = join(options.dir, 'identities');
26
- const ready = Promise.all([
27
- mkdir(options.dir, { recursive: true }),
28
- mkdir(identitiesDir, { recursive: true }),
29
- ]);
50
+ const ready = lazyDirectories(options.dir, identitiesDir);
30
51
  function recordFile(slug) {
31
52
  return join(options.dir, `${slug}.json`);
32
53
  }
@@ -66,133 +87,163 @@ export function createFileAgentDeclarationStore(options) {
66
87
  }
67
88
  async function writeIdentity(slug, name, identity) {
68
89
  const path = identityFile(slug);
69
- await writeFile(path, renderIdentityMarkdown(name, identity), 'utf8');
90
+ await writeFileAtomic(path, renderIdentityMarkdown(name, identity));
70
91
  return path;
71
92
  }
72
93
  async function findBySlug(slug) {
73
94
  const record = await readRecord(slug);
74
95
  return record ?? undefined;
75
96
  }
97
+ // Read-modify-write, serialised per agent.
98
+ //
99
+ // Every mutation reads the record, changes a field and writes the whole
100
+ // record back. Two of them on the same agent at once — an admin's PATCH and
101
+ // the runtime touching the same built-in — each read the old record, and the
102
+ // second write silently undoes the first. With a plain `writeFile` that
103
+ // surfaced as a torn read and a 500; once writes were atomic it became a
104
+ // lost update instead: the agent an admin had just switched on came back
105
+ // disabled and its run answered AGENT_DISABLED (409). A safer write cannot
106
+ // fix that — only not letting the two interleave can.
107
+ const pending = new Map();
108
+ function serialised(slug, work) {
109
+ const previous = pending.get(slug) ?? Promise.resolve();
110
+ const next = previous.catch(() => undefined).then(work);
111
+ const settled = next.catch(() => undefined);
112
+ pending.set(slug, settled);
113
+ void settled.then(() => {
114
+ if (pending.get(slug) === settled)
115
+ pending.delete(slug);
116
+ });
117
+ return next;
118
+ }
76
119
  return {
77
120
  async list() {
78
- await ready;
121
+ await ready();
79
122
  return readAll();
80
123
  },
81
124
  async get(name) {
82
- await ready;
125
+ await ready();
83
126
  return findBySlug(slugOf(name));
84
127
  },
85
128
  async create(input, builtin = false) {
86
- await ready;
129
+ await ready();
87
130
  const slug = slugOf(input.name);
88
- const existing = await findBySlug(slug);
89
- if (existing !== undefined) {
90
- throw new CogentaError({
91
- code: 'AGENT_DUPLICATE',
92
- message: `An agent named "${input.name}" already exists.`,
93
- hint: 'Choose a different name, or edit the existing agent instead.',
94
- });
95
- }
96
- const identityPath = await writeIdentity(slug, input.name, input.identity);
97
- const at = now().toISOString();
98
- const record = {
99
- id: slug,
100
- name: input.name,
101
- identity: identityPath,
102
- model: input.model,
103
- tools: input.tools,
104
- ...(input.skills === undefined ? {} : { skills: input.skills }),
105
- ...(input.subagents === undefined ? {} : { subagents: input.subagents }),
106
- ...(input.autonomy === undefined ? {} : { autonomy: input.autonomy }),
107
- ...(input.budget === undefined ? {} : { budget: input.budget }),
108
- ...(input.memory === undefined ? {} : { memory: input.memory }),
109
- ...(input.triggers === undefined ? {} : { triggers: input.triggers }),
110
- enabled: input.enabled ?? true,
111
- builtin,
112
- createdAt: at,
113
- updatedAt: at,
114
- };
115
- await writeFile(recordFile(slug), JSON.stringify(record, null, 2), 'utf8');
116
- return record;
131
+ return serialised(slug, async () => {
132
+ const existing = await findBySlug(slug);
133
+ if (existing !== undefined) {
134
+ throw new CogentaError({
135
+ code: 'AGENT_DUPLICATE',
136
+ message: `An agent named "${input.name}" already exists.`,
137
+ hint: 'Choose a different name, or edit the existing agent instead.',
138
+ });
139
+ }
140
+ const identityPath = await writeIdentity(slug, input.name, input.identity);
141
+ const at = now().toISOString();
142
+ const record = {
143
+ id: slug,
144
+ name: input.name,
145
+ identity: identityPath,
146
+ model: input.model,
147
+ tools: input.tools,
148
+ ...(input.skills === undefined ? {} : { skills: input.skills }),
149
+ ...(input.subagents === undefined ? {} : { subagents: input.subagents }),
150
+ ...(input.autonomy === undefined ? {} : { autonomy: input.autonomy }),
151
+ ...(input.budget === undefined ? {} : { budget: input.budget }),
152
+ ...(input.memory === undefined ? {} : { memory: input.memory }),
153
+ ...(input.triggers === undefined ? {} : { triggers: input.triggers }),
154
+ enabled: input.enabled ?? true,
155
+ builtin,
156
+ createdAt: at,
157
+ updatedAt: at,
158
+ };
159
+ await writeFileAtomic(recordFile(slug), JSON.stringify(record, null, 2));
160
+ return record;
161
+ });
117
162
  },
118
163
  async update(name, patch) {
119
- await ready;
164
+ await ready();
120
165
  const slug = slugOf(name);
121
- const existing = await findBySlug(slug);
122
- if (existing === undefined)
123
- throw agentUnknown(name);
124
- const identityPath = patch.identity === undefined
125
- ? existing.identity
126
- : await writeIdentity(slug, existing.name, patch.identity);
127
- const updated = {
128
- ...existing,
129
- identity: identityPath,
130
- model: patch.model ?? existing.model,
131
- tools: patch.tools ?? existing.tools,
132
- ...(patch.skills !== undefined
133
- ? { skills: patch.skills }
134
- : existing.skills === undefined
135
- ? {}
136
- : { skills: existing.skills }),
137
- ...(patch.subagents !== undefined
138
- ? { subagents: patch.subagents }
139
- : existing.subagents === undefined
140
- ? {}
141
- : { subagents: existing.subagents }),
142
- ...(patch.autonomy !== undefined
143
- ? { autonomy: patch.autonomy }
144
- : existing.autonomy === undefined
145
- ? {}
146
- : { autonomy: existing.autonomy }),
147
- ...(patch.budget !== undefined
148
- ? { budget: patch.budget }
149
- : existing.budget === undefined
150
- ? {}
151
- : { budget: existing.budget }),
152
- ...(patch.memory !== undefined
153
- ? { memory: patch.memory }
154
- : existing.memory === undefined
155
- ? {}
156
- : { memory: existing.memory }),
157
- ...(patch.triggers !== undefined
158
- ? { triggers: patch.triggers }
159
- : existing.triggers === undefined
160
- ? {}
161
- : { triggers: existing.triggers }),
162
- enabled: patch.enabled ?? existing.enabled,
163
- updatedAt: now().toISOString(),
164
- };
165
- await writeFile(recordFile(slug), JSON.stringify(updated, null, 2), 'utf8');
166
- return updated;
166
+ return serialised(slug, async () => {
167
+ const existing = await findBySlug(slug);
168
+ if (existing === undefined)
169
+ throw agentUnknown(name);
170
+ const identityPath = patch.identity === undefined
171
+ ? existing.identity
172
+ : await writeIdentity(slug, existing.name, patch.identity);
173
+ const updated = {
174
+ ...existing,
175
+ identity: identityPath,
176
+ model: patch.model ?? existing.model,
177
+ tools: patch.tools ?? existing.tools,
178
+ ...(patch.skills !== undefined
179
+ ? { skills: patch.skills }
180
+ : existing.skills === undefined
181
+ ? {}
182
+ : { skills: existing.skills }),
183
+ ...(patch.subagents !== undefined
184
+ ? { subagents: patch.subagents }
185
+ : existing.subagents === undefined
186
+ ? {}
187
+ : { subagents: existing.subagents }),
188
+ ...(patch.autonomy !== undefined
189
+ ? { autonomy: patch.autonomy }
190
+ : existing.autonomy === undefined
191
+ ? {}
192
+ : { autonomy: existing.autonomy }),
193
+ ...(patch.budget !== undefined
194
+ ? { budget: patch.budget }
195
+ : existing.budget === undefined
196
+ ? {}
197
+ : { budget: existing.budget }),
198
+ ...(patch.memory !== undefined
199
+ ? { memory: patch.memory }
200
+ : existing.memory === undefined
201
+ ? {}
202
+ : { memory: existing.memory }),
203
+ ...(patch.triggers !== undefined
204
+ ? { triggers: patch.triggers }
205
+ : existing.triggers === undefined
206
+ ? {}
207
+ : { triggers: existing.triggers }),
208
+ enabled: patch.enabled ?? existing.enabled,
209
+ updatedAt: now().toISOString(),
210
+ };
211
+ await writeFileAtomic(recordFile(slug), JSON.stringify(updated, null, 2));
212
+ return updated;
213
+ });
167
214
  },
168
215
  async setEnabled(name, enabled) {
169
- await ready;
216
+ await ready();
170
217
  const slug = slugOf(name);
171
- const existing = await findBySlug(slug);
172
- if (existing === undefined)
173
- throw agentUnknown(name);
174
- const updated = { ...existing, enabled, updatedAt: now().toISOString() };
175
- await writeFile(recordFile(slug), JSON.stringify(updated, null, 2), 'utf8');
176
- return updated;
218
+ return serialised(slug, async () => {
219
+ const existing = await findBySlug(slug);
220
+ if (existing === undefined)
221
+ throw agentUnknown(name);
222
+ const updated = { ...existing, enabled, updatedAt: now().toISOString() };
223
+ await writeFileAtomic(recordFile(slug), JSON.stringify(updated, null, 2));
224
+ return updated;
225
+ });
177
226
  },
178
227
  async remove(name) {
179
- await ready;
228
+ await ready();
180
229
  const slug = slugOf(name);
181
- const existing = await findBySlug(slug);
182
- if (existing === undefined)
183
- throw agentUnknown(name);
184
- if (existing.builtin) {
185
- throw new CogentaError({
186
- code: 'AGENT_BUILTIN_UNDELETABLE',
187
- message: `"${name}" is a built-in agent and cannot be removed.`,
188
- hint: 'Disable it instead — a built-in stays editable but can be turned off.',
189
- });
190
- }
191
- await rm(recordFile(slug), { force: true });
192
- await rm(identityFile(slug), { force: true });
230
+ return serialised(slug, async () => {
231
+ const existing = await findBySlug(slug);
232
+ if (existing === undefined)
233
+ throw agentUnknown(name);
234
+ if (existing.builtin) {
235
+ throw new CogentaError({
236
+ code: 'AGENT_BUILTIN_UNDELETABLE',
237
+ message: `"${name}" is a built-in agent and cannot be removed.`,
238
+ hint: 'Disable it instead — a built-in stays editable but can be turned off.',
239
+ });
240
+ }
241
+ await rm(recordFile(slug), { force: true });
242
+ await rm(identityFile(slug), { force: true });
243
+ });
193
244
  },
194
245
  async readIdentity(name) {
195
- await ready;
246
+ await ready();
196
247
  const slug = slugOf(name);
197
248
  const existing = await findBySlug(slug);
198
249
  if (existing === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/agents/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/agents/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Creates `dirs` the first time a file store actually needs them, and hands
3
+ * every later call the same promise.
4
+ *
5
+ * Starting the `mkdir` at construction instead leaves a promise nobody awaits
6
+ * until a method runs: if the directory cannot be created, that rejection is
7
+ * unhandled, which terminates a Node process by default — for a store that
8
+ * may never be used at all. Creating it on first use puts the failure where
9
+ * someone is waiting for it. A failed attempt is forgotten, so a directory
10
+ * that becomes creatable later (a volume mounted after start-up) works on the
11
+ * next call rather than failing forever.
12
+ */
13
+ export declare function lazyDirectories(...dirs: readonly string[]): () => Promise<void>;
14
+ //# sourceMappingURL=lazy-directories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-directories.d.ts","sourceRoot":"","sources":["../../src/fs/lazy-directories.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAc/E"}
@@ -0,0 +1,28 @@
1
+ import { mkdir } from 'node:fs/promises';
2
+ /**
3
+ * Creates `dirs` the first time a file store actually needs them, and hands
4
+ * every later call the same promise.
5
+ *
6
+ * Starting the `mkdir` at construction instead leaves a promise nobody awaits
7
+ * until a method runs: if the directory cannot be created, that rejection is
8
+ * unhandled, which terminates a Node process by default — for a store that
9
+ * may never be used at all. Creating it on first use puts the failure where
10
+ * someone is waiting for it. A failed attempt is forgotten, so a directory
11
+ * that becomes creatable later (a volume mounted after start-up) works on the
12
+ * next call rather than failing forever.
13
+ */
14
+ export function lazyDirectories(...dirs) {
15
+ let pending;
16
+ return () => {
17
+ if (pending === undefined) {
18
+ const attempt = Promise.all(dirs.map((dir) => mkdir(dir, { recursive: true }))).then(() => undefined);
19
+ pending = attempt;
20
+ attempt.catch(() => {
21
+ if (pending === attempt)
22
+ pending = undefined;
23
+ });
24
+ }
25
+ return pending;
26
+ };
27
+ }
28
+ //# sourceMappingURL=lazy-directories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-directories.js","sourceRoot":"","sources":["../../src/fs/lazy-directories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,GAAG,IAAuB;IACxD,IAAI,OAAkC,CAAA;IACtC,OAAO,GAAG,EAAE;QACV,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAClF,GAAG,EAAE,CAAC,SAAS,CAChB,CAAA;YACD,OAAO,GAAG,OAAO,CAAA;YACjB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBACjB,IAAI,OAAO,KAAK,OAAO;oBAAE,OAAO,GAAG,SAAS,CAAA;YAC9C,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;AACH,CAAC"}
@@ -23,6 +23,34 @@ export interface AgentIdentity {
23
23
  export interface TaskContext {
24
24
  readonly instruction: string;
25
25
  }
26
+ /**
27
+ * A compile-time domain specification: the durable "here is how this kind of
28
+ * artefact is built" knowledge an agent needs before it can do the work at
29
+ * all — the structure and composition of a Cogenta theme, for the theme
30
+ * creator that motivated this field.
31
+ *
32
+ * It is a separate level from `agent` on purpose. `role`/`objectives` say who
33
+ * an agent is and how it should proceed; a specification says what the thing
34
+ * it produces actually is. Folding one into the other is what left the theme
35
+ * writer with a one-sentence role while its entire structural brief sat in a
36
+ * tool `description` — the place a model reads as API reference rather than
37
+ * as standing instruction.
38
+ *
39
+ * **Never escaped, and therefore never a channel for anything external.**
40
+ * Like `task.instruction` (see `assembleContext` below) this is trusted text,
41
+ * and for the same reason: it is a constant in this repository's own source,
42
+ * not a site owner's input, not a model's output, and not content that
43
+ * arrived from a comment, an import, or a fetch. That matters concretely
44
+ * here — a specification is mostly code and markup examples, and escaping
45
+ * would turn every `<header>` in them into `&lt;header&gt;`, teaching the
46
+ * model to emit exactly the wrong thing. Anything whose origin is not a
47
+ * literal in this codebase belongs in `data`, which is escaped.
48
+ */
49
+ export interface SpecificationContext {
50
+ /** Names what is being specified, e.g. `"Cogenta theme"` — shown as the section's own label. */
51
+ readonly subject: string;
52
+ readonly body: string;
53
+ }
26
54
  /**
27
55
  * One piece of untrusted content — a comment, an import, a fetched page
28
56
  * (R8: "Tout contenu externe... est balisé comme tel"). `source` is shown to
@@ -37,10 +65,12 @@ export interface AssembleContextInput {
37
65
  readonly site: SiteContext;
38
66
  readonly agent: AgentIdentity;
39
67
  readonly task: TaskContext;
68
+ /** Optional and additive — an agent that needs no domain specification simply omits it, and the assembled system prompt has no such section. */
69
+ readonly specification?: SpecificationContext;
40
70
  readonly data?: readonly DataItem[];
41
71
  }
42
72
  export interface AssembledContext {
43
- /** CONSTITUTION → SITE → AGENT → TASK, in that fixed order — this is `ChatRequest.system`. */
73
+ /** CONSTITUTION → SITE → AGENT → SPECIFICATION (when given) → TASK, in that fixed order — this is `ChatRequest.system`. */
44
74
  readonly system: string;
45
75
  /** DATA, one tagged message per item, appended after `system` — never merged into it. */
46
76
  readonly dataMessages: readonly ChatMessage[];
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/identity/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,yFAAyF;IACzF,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAA;CAC9C;AA6DD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CAmB7E"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/identity/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,gJAAgJ;IAChJ,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,2HAA2H;IAC3H,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,yFAAyF;IACzF,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAA;CAC9C;AA6DD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CA6B7E"}
@@ -66,6 +66,16 @@ export function assembleContext(input) {
66
66
  tag('constitution', CONSTITUTION_TEXT),
67
67
  tag('site', siteSection(input.site)),
68
68
  tag('agent', agentSection(input.agent)),
69
+ // Sits between AGENT and TASK because that is the order the levels are
70
+ // read in: who you are, then what the thing you build is, then what is
71
+ // being asked of you this time. Not escaped — see `SpecificationContext`.
72
+ ...(input.specification === undefined
73
+ ? []
74
+ : [
75
+ tag('specification', input.specification.body, {
76
+ subject: input.specification.subject,
77
+ }),
78
+ ]),
69
79
  // Not escaped: unlike `data`, a task instruction is runtime-generated
70
80
  // (a trigger, an operator, a schedule), not external content — R8 only
71
81
  // requires balisage for content that entered from a comment, import, or
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/identity/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/identity/context.ts"],"names":[],"mappings":"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"}