studiograph 1.3.48-next.1 → 1.3.48-next.11

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 (182) hide show
  1. package/dist/agent/role-loader.d.ts +24 -0
  2. package/dist/agent/role-loader.js +67 -0
  3. package/dist/agent/role-loader.js.map +1 -0
  4. package/dist/core/schema-registry.d.ts +16 -0
  5. package/dist/core/schema-registry.js +77 -0
  6. package/dist/core/schema-registry.js.map +1 -1
  7. package/dist/core/types.d.ts +8 -0
  8. package/dist/core/types.js +1 -0
  9. package/dist/core/types.js.map +1 -1
  10. package/dist/server/agents/agent-loader.d.ts +16 -0
  11. package/dist/server/agents/agent-loader.js +175 -0
  12. package/dist/server/agents/agent-loader.js.map +1 -0
  13. package/dist/server/agents/agent-runner.d.ts +33 -0
  14. package/dist/server/agents/agent-runner.js +187 -0
  15. package/dist/server/agents/agent-runner.js.map +1 -0
  16. package/dist/server/agents/agent-runtime.d.ts +38 -0
  17. package/dist/server/agents/agent-runtime.js +207 -0
  18. package/dist/server/agents/agent-runtime.js.map +1 -0
  19. package/dist/server/agents/base-agent.d.ts +30 -0
  20. package/dist/server/agents/base-agent.js +88 -0
  21. package/dist/server/agents/base-agent.js.map +1 -0
  22. package/dist/server/agents/executive-digest.d.ts +16 -0
  23. package/dist/server/agents/executive-digest.js +115 -0
  24. package/dist/server/agents/executive-digest.js.map +1 -0
  25. package/dist/server/agents/graph-steward.d.ts +16 -0
  26. package/dist/server/agents/graph-steward.js +59 -0
  27. package/dist/server/agents/graph-steward.js.map +1 -0
  28. package/dist/server/agents/meeting-followup.d.ts +16 -0
  29. package/dist/server/agents/meeting-followup.js +88 -0
  30. package/dist/server/agents/meeting-followup.js.map +1 -0
  31. package/dist/server/agents/pipeline-monitor.d.ts +15 -0
  32. package/dist/server/agents/pipeline-monitor.js +86 -0
  33. package/dist/server/agents/pipeline-monitor.js.map +1 -0
  34. package/dist/server/agents/types.d.ts +80 -0
  35. package/dist/server/agents/types.js +41 -0
  36. package/dist/server/agents/types.js.map +1 -0
  37. package/dist/server/index.js +12 -1
  38. package/dist/server/index.js.map +1 -1
  39. package/dist/server/routes/agents-api.d.ts +10 -0
  40. package/dist/server/routes/agents-api.js +25 -0
  41. package/dist/server/routes/agents-api.js.map +1 -0
  42. package/dist/server/routes/capture-api.d.ts +11 -0
  43. package/dist/server/routes/capture-api.js +60 -0
  44. package/dist/server/routes/capture-api.js.map +1 -0
  45. package/dist/server/routes/graph-api.js +34 -0
  46. package/dist/server/routes/graph-api.js.map +1 -1
  47. package/dist/server/routes/insights-api.js +11 -0
  48. package/dist/server/routes/insights-api.js.map +1 -1
  49. package/dist/server/routes/meeting-ingest-api.d.ts +4 -5
  50. package/dist/server/routes/meeting-ingest-api.js +41 -266
  51. package/dist/server/routes/meeting-ingest-api.js.map +1 -1
  52. package/dist/server/routes/sync-api.js +34 -0
  53. package/dist/server/routes/sync-api.js.map +1 -1
  54. package/dist/server/routes/views-api.js +24 -7
  55. package/dist/server/routes/views-api.js.map +1 -1
  56. package/dist/services/auth-service.d.ts +14 -2
  57. package/dist/services/auth-service.js +93 -7
  58. package/dist/services/auth-service.js.map +1 -1
  59. package/dist/services/batch-processor.d.ts +49 -0
  60. package/dist/services/batch-processor.js +166 -0
  61. package/dist/services/batch-processor.js.map +1 -0
  62. package/dist/services/git.d.ts +4 -0
  63. package/dist/services/git.js +11 -0
  64. package/dist/services/git.js.map +1 -1
  65. package/dist/services/graph-maintenance.d.ts +42 -0
  66. package/dist/services/graph-maintenance.js +143 -0
  67. package/dist/services/graph-maintenance.js.map +1 -0
  68. package/dist/services/meeting-processor.d.ts +91 -0
  69. package/dist/services/meeting-processor.js +331 -0
  70. package/dist/services/meeting-processor.js.map +1 -0
  71. package/dist/web/_app/immutable/assets/0.BfIKAx3R.css +1 -0
  72. package/dist/web/_app/immutable/assets/2.o5gSwzab.css +1 -0
  73. package/dist/web/_app/immutable/assets/{3.BtaZagnv.css → 3.pL3gv83R.css} +1 -1
  74. package/dist/web/_app/immutable/assets/4.BQGl5tZW.css +1 -0
  75. package/dist/web/_app/immutable/assets/6.BpiYFusd.css +1 -0
  76. package/dist/web/_app/immutable/assets/ViewToolbar.DpnwjPN2.css +1 -0
  77. package/dist/web/_app/immutable/chunks/{CNJXZsV0.js → -g99LCFh.js} +1 -1
  78. package/dist/web/_app/immutable/chunks/{DtM5cEDu.js → B2Dejy-t.js} +1 -1
  79. package/dist/web/_app/immutable/chunks/{CT6oIU-C.js → B3N4kE3J.js} +1 -1
  80. package/dist/web/_app/immutable/chunks/B3ViLD4I.js +1 -0
  81. package/dist/web/_app/immutable/chunks/BAGB0lMx.js +1 -0
  82. package/dist/web/_app/immutable/chunks/BCvqUYid.js +1 -0
  83. package/dist/web/_app/immutable/chunks/{DX3q8Wh7.js → BFFEFyAj.js} +1 -1
  84. package/dist/web/_app/immutable/chunks/{oC_W7W7p.js → BHhSDnSr.js} +1 -1
  85. package/dist/web/_app/immutable/chunks/BQDlskmx.js +1 -0
  86. package/dist/web/_app/immutable/chunks/BbXvK1EU.js +1 -0
  87. package/dist/web/_app/immutable/chunks/{4Hhzb6pv.js → BiEI-dJu.js} +1 -1
  88. package/dist/web/_app/immutable/chunks/BrhE1VRO.js +1 -0
  89. package/dist/web/_app/immutable/chunks/{C7VoTosa.js → Bz0ZjVQE.js} +1 -1
  90. package/dist/web/_app/immutable/chunks/{CWQRQXxy.js → C0LVZhvn.js} +1 -1
  91. package/dist/web/_app/immutable/chunks/C6QLxdX9.js +1 -0
  92. package/dist/web/_app/immutable/chunks/{Eqahi7_S.js → CBdr8GFI.js} +1 -1
  93. package/dist/web/_app/immutable/chunks/CEOdgxTv.js +2 -0
  94. package/dist/web/_app/immutable/chunks/{BTX2Jr8_.js → CEc68H_o.js} +1 -1
  95. package/dist/web/_app/immutable/chunks/CI57Q7v7.js +1 -0
  96. package/dist/web/_app/immutable/chunks/CKTSFnqS.js +1 -0
  97. package/dist/web/_app/immutable/chunks/CKxpZpNY.js +1 -0
  98. package/dist/web/_app/immutable/chunks/{DGbA7IXh.js → CR97YRf2.js} +1 -1
  99. package/dist/web/_app/immutable/chunks/{tvOsokaa.js → CUmdiGce.js} +1 -1
  100. package/dist/web/_app/immutable/chunks/CVIpRbs-.js +1 -0
  101. package/dist/web/_app/immutable/chunks/CfV7kuPx.js +1 -0
  102. package/dist/web/_app/immutable/chunks/Cs15FURD.js +1 -0
  103. package/dist/web/_app/immutable/chunks/CuMU-Bap.js +2 -0
  104. package/dist/web/_app/immutable/chunks/{BU9bZcWS.js → D-y5IxIv.js} +2 -2
  105. package/dist/web/_app/immutable/chunks/{CDV5Q7RN.js → D6OH-VUc.js} +1 -1
  106. package/dist/web/_app/immutable/chunks/DFCmCFly.js +1 -0
  107. package/dist/web/_app/immutable/chunks/DHcPS7r7.js +1 -0
  108. package/dist/web/_app/immutable/chunks/{BSsDC_p4.js → DLYEC7N1.js} +1 -1
  109. package/dist/web/_app/immutable/chunks/{CSCdPd1d.js → DU9_Jo1W.js} +1 -1
  110. package/dist/web/_app/immutable/chunks/{DbbB6Up5.js → DVD26GEq.js} +1 -1
  111. package/dist/web/_app/immutable/chunks/DYt9ofDq.js +1 -0
  112. package/dist/web/_app/immutable/chunks/{cLyZlkXv.js → DcXB6aAE.js} +1 -1
  113. package/dist/web/_app/immutable/chunks/Dhg1NJGL.js +1 -0
  114. package/dist/web/_app/immutable/chunks/DlpCOnCZ.js +1 -0
  115. package/dist/web/_app/immutable/chunks/{CTRxNfZk.js → DsTa_cbM.js} +1 -1
  116. package/dist/web/_app/immutable/chunks/Dvsh3PAR.js +1 -0
  117. package/dist/web/_app/immutable/chunks/Dw2HUmj8.js +1 -0
  118. package/dist/web/_app/immutable/chunks/{CrdV0ttd.js → Dw_S1EgW.js} +1 -1
  119. package/dist/web/_app/immutable/chunks/{B340SUKR.js → DyGk2tic.js} +1 -1
  120. package/dist/web/_app/immutable/chunks/{QF8MAmnc.js → OeNrvFP7.js} +1 -1
  121. package/dist/web/_app/immutable/chunks/gbD2RDs8.js +5 -0
  122. package/dist/web/_app/immutable/chunks/{CscoF-YL.js → i7YmDvKW.js} +1 -1
  123. package/dist/web/_app/immutable/chunks/pcSyeVM3.js +1 -0
  124. package/dist/web/_app/immutable/chunks/{CodnfUpZ.js → qDPn3uyM.js} +1 -1
  125. package/dist/web/_app/immutable/chunks/vTsVb_dN.js +1 -0
  126. package/dist/web/_app/immutable/chunks/v_iOQJNU.js +1 -0
  127. package/dist/web/_app/immutable/chunks/{D7ZqAKi9.js → wDIGUaoU.js} +1 -1
  128. package/dist/web/_app/immutable/entry/app.DPSWWK4N.js +2 -0
  129. package/dist/web/_app/immutable/entry/start.CjZ-kVki.js +1 -0
  130. package/dist/web/_app/immutable/nodes/{0.ag_8oFh-.js → 0.D-g9v2np.js} +2 -2
  131. package/dist/web/_app/immutable/nodes/{1.BNYg0Vsp.js → 1.a1oItdgh.js} +1 -1
  132. package/dist/web/_app/immutable/nodes/{9.BH02cvQU.js → 10.Dn2BfNQH.js} +1 -1
  133. package/dist/web/_app/immutable/nodes/{10.Cyg4coUc.js → 11.6leozpnD.js} +1 -1
  134. package/dist/web/_app/immutable/nodes/2.D6JIwhBk.js +301 -0
  135. package/dist/web/_app/immutable/nodes/3.Dzn5nHMV.js +2 -0
  136. package/dist/web/_app/immutable/nodes/4.BkqkU3Z2.js +12 -0
  137. package/dist/web/_app/immutable/nodes/{5.DlF50ub0.js → 5.CS2ND7kz.js} +2 -2
  138. package/dist/web/_app/immutable/nodes/6.BJOpFQoZ.js +1 -0
  139. package/dist/web/_app/immutable/nodes/7.VweBrMjT.js +2 -0
  140. package/dist/web/_app/immutable/nodes/8.CgsLKbfE.js +2 -0
  141. package/dist/web/_app/immutable/nodes/9.CDIWquhD.js +1 -0
  142. package/dist/web/_app/version.json +1 -1
  143. package/dist/web/index.html +11 -11
  144. package/package.json +1 -1
  145. package/dist/web/_app/immutable/assets/0.DdizXOKi.css +0 -1
  146. package/dist/web/_app/immutable/assets/2.n7-yW_Fs.css +0 -1
  147. package/dist/web/_app/immutable/assets/4.DT7X0x5S.css +0 -1
  148. package/dist/web/_app/immutable/assets/ViewToolbar.D-QW2oKe.css +0 -1
  149. package/dist/web/_app/immutable/chunks/72bZS3G9.js +0 -1
  150. package/dist/web/_app/immutable/chunks/8319UlK_.js +0 -1
  151. package/dist/web/_app/immutable/chunks/BHNrGVTD.js +0 -1
  152. package/dist/web/_app/immutable/chunks/BS2rFAVq.js +0 -1
  153. package/dist/web/_app/immutable/chunks/BfIhVLn6.js +0 -1
  154. package/dist/web/_app/immutable/chunks/Bsacq2UX.js +0 -1
  155. package/dist/web/_app/immutable/chunks/ByunV8un.js +0 -1
  156. package/dist/web/_app/immutable/chunks/CJ8__CWt.js +0 -1
  157. package/dist/web/_app/immutable/chunks/CJUKmosC.js +0 -5
  158. package/dist/web/_app/immutable/chunks/CXH6iFbA.js +0 -1
  159. package/dist/web/_app/immutable/chunks/CmCtpZ1Y.js +0 -1
  160. package/dist/web/_app/immutable/chunks/Cx4YdFMk.js +0 -1
  161. package/dist/web/_app/immutable/chunks/O9Eb9k00.js +0 -1
  162. package/dist/web/_app/immutable/chunks/UjzxCpxn.js +0 -1
  163. package/dist/web/_app/immutable/chunks/WlsUHv-K.js +0 -1
  164. package/dist/web/_app/immutable/chunks/Y90OgS-9.js +0 -1
  165. package/dist/web/_app/immutable/chunks/iDtAARVW.js +0 -2
  166. package/dist/web/_app/immutable/chunks/rJdWIgh-.js +0 -1
  167. package/dist/web/_app/immutable/chunks/uLEXaPwE.js +0 -1
  168. package/dist/web/_app/immutable/chunks/vANlie4P.js +0 -2
  169. package/dist/web/_app/immutable/chunks/vSaooFHB.js +0 -1
  170. package/dist/web/_app/immutable/entry/app.2t49gcrW.js +0 -2
  171. package/dist/web/_app/immutable/entry/start.BdkvSU2l.js +0 -1
  172. package/dist/web/_app/immutable/nodes/2.CGjgxqHA.js +0 -168
  173. package/dist/web/_app/immutable/nodes/3.DEqqEOTV.js +0 -1
  174. package/dist/web/_app/immutable/nodes/4.V61Ed9TC.js +0 -12
  175. package/dist/web/_app/immutable/nodes/6.DEPjN38c.js +0 -2
  176. package/dist/web/_app/immutable/nodes/7.npfkOwsL.js +0 -2
  177. package/dist/web/_app/immutable/nodes/8.BiZVwE8_.js +0 -1
  178. /package/dist/web/_app/immutable/assets/{9.CT4xL4K3.css → 10.CT4xL4K3.css} +0 -0
  179. /package/dist/web/_app/immutable/assets/{10.BUrHkYry.css → 11.BUrHkYry.css} +0 -0
  180. /package/dist/web/_app/immutable/assets/{6.CquhUpOu.css → 7.CquhUpOu.css} +0 -0
  181. /package/dist/web/_app/immutable/assets/{7.CjbDRbuG.css → 8.CjbDRbuG.css} +0 -0
  182. /package/dist/web/_app/immutable/assets/{8.S1QdUGNM.css → 9.S1QdUGNM.css} +0 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Role Loader — agent role definitions
3
+ *
4
+ * Roles are markdown files in src/agent/roles/ with YAML frontmatter.
5
+ * Each role defines a specialized persona with a system prompt extension
6
+ * that gets injected into the agent's context when the role is active.
7
+ *
8
+ * Frontmatter fields:
9
+ * name: kebab-case identifier
10
+ * label: human-readable display name
11
+ * description: shown in role selector
12
+ * icon: Carbon icon name for the UI
13
+ */
14
+ export interface AgentRole {
15
+ name: string;
16
+ label: string;
17
+ description: string;
18
+ icon: string;
19
+ prompt: string;
20
+ }
21
+ /**
22
+ * Load all role definitions from the roles directory.
23
+ */
24
+ export declare function loadRoles(rolesDir: string): AgentRole[];
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Role Loader — agent role definitions
3
+ *
4
+ * Roles are markdown files in src/agent/roles/ with YAML frontmatter.
5
+ * Each role defines a specialized persona with a system prompt extension
6
+ * that gets injected into the agent's context when the role is active.
7
+ *
8
+ * Frontmatter fields:
9
+ * name: kebab-case identifier
10
+ * label: human-readable display name
11
+ * description: shown in role selector
12
+ * icon: Carbon icon name for the UI
13
+ */
14
+ import { existsSync, readdirSync, readFileSync } from 'fs';
15
+ import { join, extname } from 'path';
16
+ /**
17
+ * Load all role definitions from the roles directory.
18
+ */
19
+ export function loadRoles(rolesDir) {
20
+ if (!existsSync(rolesDir))
21
+ return [];
22
+ const roles = [];
23
+ for (const file of readdirSync(rolesDir)) {
24
+ if (extname(file) !== '.md')
25
+ continue;
26
+ try {
27
+ const content = readFileSync(join(rolesDir, file), 'utf-8');
28
+ const { meta, body } = parseFrontmatter(content);
29
+ roles.push({
30
+ name: meta.name || file.replace('.md', ''),
31
+ label: meta.label || meta.name || file.replace('.md', ''),
32
+ description: meta.description || '',
33
+ icon: meta.icon || 'Chat',
34
+ prompt: body.trim(),
35
+ });
36
+ }
37
+ catch {
38
+ // Skip malformed files
39
+ }
40
+ }
41
+ // Ensure 'general' is always first
42
+ roles.sort((a, b) => {
43
+ if (a.name === 'general')
44
+ return -1;
45
+ if (b.name === 'general')
46
+ return 1;
47
+ return a.label.localeCompare(b.label);
48
+ });
49
+ return roles;
50
+ }
51
+ function parseFrontmatter(content) {
52
+ const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
53
+ if (!match)
54
+ return { meta: {}, body: content };
55
+ const meta = {};
56
+ for (const line of match[1].split('\n')) {
57
+ const colon = line.indexOf(':');
58
+ if (colon === -1)
59
+ continue;
60
+ const key = line.slice(0, colon).trim();
61
+ const value = line.slice(colon + 1).trim();
62
+ if (key)
63
+ meta[key] = value;
64
+ }
65
+ return { meta, body: match[2] };
66
+ }
67
+ //# sourceMappingURL=role-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-loader.js","sourceRoot":"","sources":["../../src/agent/role-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAUrC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK;YAAE,SAAS;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAEjD,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACzD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM;gBACzB,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAE/C,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,GAAG;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC"}
@@ -24,6 +24,22 @@ export declare class SchemaRegistry {
24
24
  * For types with no extension: returns [].
25
25
  */
26
26
  getFieldDefs(entityType: string): FieldDefinition[];
27
+ /**
28
+ * Get the body template for an entity type.
29
+ * Workspace extension body_template overrides built-in defaults.
30
+ * Returns null for types with no template (e.g., note, dataset).
31
+ */
32
+ getBodyTemplate(entityType: string): string | null;
33
+ /**
34
+ * Get field metadata for an entity type by introspecting the Zod schema.
35
+ * Returns field name, inferred type, required status, and description.
36
+ */
37
+ getFieldMetadata(entityType: string): Array<{
38
+ name: string;
39
+ type: string;
40
+ required: boolean;
41
+ description?: string;
42
+ }>;
27
43
  /**
28
44
  * Get all entity type names: built-in types + custom extension types.
29
45
  */
@@ -49,6 +49,44 @@ function buildZodFields(fields) {
49
49
  }
50
50
  return result;
51
51
  }
52
+ /** Built-in body templates for entity types (used when no workspace override exists) */
53
+ const BUILTIN_BODY_TEMPLATES = {
54
+ meeting: '## Agenda\n\n1.\n2.\n3.\n\n## Notes\n\n\n\n## Action Items\n\n\n\n## Summary\n\n',
55
+ decision: '## Context\n\n\n\n## Alternatives Considered\n\n### Option 1\n-\n\n### Option 2\n-\n\n## Decision\n\n\n\n## Rationale\n\n1.\n2.\n3.\n\n## Consequences\n\n### Positive\n-\n\n### Negative\n-\n\n## Decision Trace\n\n| Relationship | Decision | Description |\n|---|---|---|\n| Enabled by | [[]] | |\n| Enables | [[]] | |\n\n## Source\n\n- Meeting: [[]]\n',
56
+ project: '## Overview\n\n\n\n## Deliverables\n\n\n\n## Notes\n\n',
57
+ document: '## Overview\n\n\n\n## Details\n\n',
58
+ process: '## Overview\n\n\n\n## Steps\n\n\n\n## Best Practices\n\n**Do:**\n-\n\n**Don\'t:**\n-\n\n## Notes\n\n',
59
+ 'case-study': '## Objective\n\n\n\n## Solution\n\n\n\n## Outcome\n\n\n\n## Team\n\n### Client Team\n\n| Name | Title | Organization |\n|---|---|---|\n| | | |\n\n### Project Team\n\n| Name | Title | Role |\n|---|---|---|\n| | | |\n\n## Learnings\n\n',
60
+ deliverable: '## Overview\n\n\n\n## Scope\n\n-\n\n## Acceptance Criteria\n\n-\n\n## Dependencies\n\n-\n\n## Notes\n\n',
61
+ publication: '## Content\n\n\n\n## Distribution\n\n\n\n## Notes\n\n',
62
+ deal: '## Opportunity\n\n\n\n## Scope\n\n\n\n## Notes\n\n',
63
+ standard: '## Overview\n\n\n\n## Guidelines\n\n\n\n## Examples\n\n\n\n## Notes\n\n',
64
+ task: '## Description\n\n\n\n## Notes\n\n',
65
+ person: '## Notes\n\n',
66
+ organization: '## Profile\n\n\n\n## Notes\n\n',
67
+ role: '## Responsibilities\n\n\n\n## Requirements\n\n',
68
+ 'practice-area': '## Overview\n\n\n\n## Capabilities\n\n\n\n## Case Studies\n\n',
69
+ reference: '## Description\n\n\n\n## Notes\n\n',
70
+ };
71
+ /** Infer a simple type string from a Zod schema */
72
+ function inferZodType(schema) {
73
+ if (schema instanceof z.ZodOptional || schema instanceof z.ZodDefault) {
74
+ return inferZodType(schema._def.innerType);
75
+ }
76
+ if (schema instanceof z.ZodString)
77
+ return 'string';
78
+ if (schema instanceof z.ZodNumber)
79
+ return 'number';
80
+ if (schema instanceof z.ZodBoolean)
81
+ return 'boolean';
82
+ if (schema instanceof z.ZodEnum)
83
+ return 'enum';
84
+ if (schema instanceof z.ZodArray)
85
+ return 'string[]';
86
+ if (schema instanceof z.ZodLiteral)
87
+ return 'string';
88
+ return 'string';
89
+ }
52
90
  export class SchemaRegistry {
53
91
  extensions;
54
92
  schemaCache = new Map();
@@ -103,6 +141,45 @@ export class SchemaRegistry {
103
141
  getFieldDefs(entityType) {
104
142
  return this.fieldDefsCache.get(entityType) ?? [];
105
143
  }
144
+ /**
145
+ * Get the body template for an entity type.
146
+ * Workspace extension body_template overrides built-in defaults.
147
+ * Returns null for types with no template (e.g., note, dataset).
148
+ */
149
+ getBodyTemplate(entityType) {
150
+ // Workspace override takes priority
151
+ const ext = this.extensions[entityType];
152
+ if (ext?.body_template)
153
+ return ext.body_template;
154
+ // Fall back to built-in
155
+ return BUILTIN_BODY_TEMPLATES[entityType] ?? null;
156
+ }
157
+ /**
158
+ * Get field metadata for an entity type by introspecting the Zod schema.
159
+ * Returns field name, inferred type, required status, and description.
160
+ */
161
+ getFieldMetadata(entityType) {
162
+ const schema = this.getSchema(entityType);
163
+ const fields = [];
164
+ if (schema instanceof z.ZodObject) {
165
+ const shape = schema.shape;
166
+ for (const [key, value] of Object.entries(shape)) {
167
+ const zodField = value;
168
+ const isOptional = zodField.isOptional();
169
+ const description = zodField.description;
170
+ const type = inferZodType(zodField);
171
+ fields.push({ name: key, type, required: !isOptional, description });
172
+ }
173
+ }
174
+ // Add extension fields
175
+ const extFields = this.getFieldDefs(entityType);
176
+ for (const f of extFields) {
177
+ if (!fields.some(existing => existing.name === f.name)) {
178
+ fields.push({ name: f.name, type: f.type, required: f.required ?? false, description: f.description });
179
+ }
180
+ }
181
+ return fields;
182
+ }
106
183
  /**
107
184
  * Get all entity type names: built-in types + custom extension types.
108
185
  */
@@ -1 +1 @@
1
- {"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../../src/core/schema-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../../src/core/schema-registry.ts"],"names":[],"mappings":"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"}
@@ -166,6 +166,7 @@ export declare const SchemaExtensionSchema: z.ZodObject<{
166
166
  enum_values?: string[] | undefined;
167
167
  default?: unknown;
168
168
  }>, "many">>;
169
+ body_template: z.ZodOptional<z.ZodString>;
169
170
  }, "strip", z.ZodTypeAny, {
170
171
  description?: string | undefined;
171
172
  label?: string | undefined;
@@ -185,6 +186,7 @@ export declare const SchemaExtensionSchema: z.ZodObject<{
185
186
  enum_values?: string[] | undefined;
186
187
  default?: unknown;
187
188
  }[] | undefined;
189
+ body_template?: string | undefined;
188
190
  }, {
189
191
  description?: string | undefined;
190
192
  label?: string | undefined;
@@ -204,6 +206,7 @@ export declare const SchemaExtensionSchema: z.ZodObject<{
204
206
  enum_values?: string[] | undefined;
205
207
  default?: unknown;
206
208
  }[] | undefined;
209
+ body_template?: string | undefined;
207
210
  }>;
208
211
  export type SchemaExtension = z.infer<typeof SchemaExtensionSchema>;
209
212
  export declare const WorkspaceSyncTargetSchema: z.ZodObject<{
@@ -367,6 +370,7 @@ export declare const WorkspaceConfigSchema: z.ZodObject<{
367
370
  enum_values?: string[] | undefined;
368
371
  default?: unknown;
369
372
  }>, "many">>;
373
+ body_template: z.ZodOptional<z.ZodString>;
370
374
  }, "strip", z.ZodTypeAny, {
371
375
  description?: string | undefined;
372
376
  label?: string | undefined;
@@ -386,6 +390,7 @@ export declare const WorkspaceConfigSchema: z.ZodObject<{
386
390
  enum_values?: string[] | undefined;
387
391
  default?: unknown;
388
392
  }[] | undefined;
393
+ body_template?: string | undefined;
389
394
  }, {
390
395
  description?: string | undefined;
391
396
  label?: string | undefined;
@@ -405,6 +410,7 @@ export declare const WorkspaceConfigSchema: z.ZodObject<{
405
410
  enum_values?: string[] | undefined;
406
411
  default?: unknown;
407
412
  }[] | undefined;
413
+ body_template?: string | undefined;
408
414
  }>>>;
409
415
  sync: z.ZodOptional<z.ZodArray<z.ZodObject<{
410
416
  source: z.ZodString;
@@ -521,6 +527,7 @@ export declare const WorkspaceConfigSchema: z.ZodObject<{
521
527
  enum_values?: string[] | undefined;
522
528
  default?: unknown;
523
529
  }[] | undefined;
530
+ body_template?: string | undefined;
524
531
  }> | undefined;
525
532
  accent_color?: string | undefined;
526
533
  railway?: {
@@ -588,6 +595,7 @@ export declare const WorkspaceConfigSchema: z.ZodObject<{
588
595
  enum_values?: string[] | undefined;
589
596
  default?: unknown;
590
597
  }[] | undefined;
598
+ body_template?: string | undefined;
591
599
  }> | undefined;
592
600
  accent_color?: string | undefined;
593
601
  railway?: {
@@ -53,6 +53,7 @@ export const SchemaExtensionSchema = z.object({
53
53
  description: z.string().optional(),
54
54
  additional_fields: z.array(FieldDefinitionSchema).optional(), // for extending existing types
55
55
  fields: z.array(FieldDefinitionSchema).optional(), // for defining new custom types
56
+ body_template: z.string().optional(), // default markdown body for new entities of this type
56
57
  });
57
58
  export const WorkspaceSyncTargetSchema = z.object({
58
59
  repo: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Agent Loader — discovers and parses agent definitions
3
+ *
4
+ * Agents are markdown files with YAML frontmatter, similar to skills.
5
+ * Loaded from:
6
+ * 1. Built-in: src/server/agents/builtins/*.md
7
+ * 2. Workspace: .studiograph/agents/{name}/agent.md
8
+ * 3. User home: ~/.studiograph/agents/{name}/agent.md
9
+ *
10
+ * First occurrence of a name wins (workspace overrides built-in).
11
+ */
12
+ import type { AgentConfig } from './types.js';
13
+ /**
14
+ * Load all agent definitions from built-in + workspace + user directories.
15
+ */
16
+ export declare function loadAgents(builtinDir: string, workspacePath: string): AgentConfig[];
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Agent Loader — discovers and parses agent definitions
3
+ *
4
+ * Agents are markdown files with YAML frontmatter, similar to skills.
5
+ * Loaded from:
6
+ * 1. Built-in: src/server/agents/builtins/*.md
7
+ * 2. Workspace: .studiograph/agents/{name}/agent.md
8
+ * 3. User home: ~/.studiograph/agents/{name}/agent.md
9
+ *
10
+ * First occurrence of a name wins (workspace overrides built-in).
11
+ */
12
+ import { existsSync, readdirSync, readFileSync } from 'fs';
13
+ import { join, extname } from 'path';
14
+ /**
15
+ * Load all agent definitions from built-in + workspace + user directories.
16
+ */
17
+ export function loadAgents(builtinDir, workspacePath) {
18
+ const agents = new Map();
19
+ // 1. Built-in agents (lowest priority)
20
+ for (const config of loadFromDirectory(builtinDir, true)) {
21
+ agents.set(config.name, config);
22
+ }
23
+ // 2. Workspace agents (override built-in)
24
+ const workspaceAgentsDir = join(workspacePath, '.studiograph', 'agents');
25
+ for (const config of loadFromDirectory(workspaceAgentsDir, false)) {
26
+ agents.set(config.name, config);
27
+ }
28
+ return Array.from(agents.values());
29
+ }
30
+ function loadFromDirectory(dir, builtin) {
31
+ if (!existsSync(dir))
32
+ return [];
33
+ const configs = [];
34
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
35
+ // Directory agents: agents/{name}/agent.md
36
+ if (entry.isDirectory()) {
37
+ const agentFile = join(dir, entry.name, 'agent.md');
38
+ if (existsSync(agentFile)) {
39
+ const config = parseAgentFile(agentFile, builtin);
40
+ if (config)
41
+ configs.push(config);
42
+ }
43
+ continue;
44
+ }
45
+ // Single-file agents: agents/{name}.md
46
+ if (entry.isFile() && extname(entry.name) === '.md') {
47
+ const agentFile = join(dir, entry.name);
48
+ const config = parseAgentFile(agentFile, builtin);
49
+ if (config)
50
+ configs.push(config);
51
+ }
52
+ }
53
+ return configs;
54
+ }
55
+ function parseAgentFile(filePath, builtin) {
56
+ try {
57
+ const content = readFileSync(filePath, 'utf-8');
58
+ const { meta, body } = parseFrontmatter(content);
59
+ if (!meta.name)
60
+ return null;
61
+ return {
62
+ name: meta.name,
63
+ label: meta.label ?? meta.name.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase()),
64
+ interval: meta.interval ?? '15m',
65
+ scope: {
66
+ collections: meta.scope?.collections ?? undefined,
67
+ tools: meta.scope?.tools ?? ['graph'],
68
+ },
69
+ autonomy: meta.autonomy ?? 'suggest',
70
+ enabled: meta.enabled !== false,
71
+ prompt: body.trim(),
72
+ sourcePath: filePath,
73
+ builtin,
74
+ };
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
80
+ /**
81
+ * YAML frontmatter parser — handles nested objects for scope.
82
+ */
83
+ function parseFrontmatter(content) {
84
+ const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
85
+ if (!match)
86
+ return { meta: {}, body: content };
87
+ const meta = {};
88
+ const lines = match[1].split('\n');
89
+ let currentKey = '';
90
+ let inArray = false;
91
+ let arrayKey = '';
92
+ let nestedObj = {};
93
+ let inNested = false;
94
+ let nestedKey = '';
95
+ for (const line of lines) {
96
+ const trimmed = line.trimEnd();
97
+ // Array item
98
+ if (inArray && trimmed.match(/^\s+-\s+(.+)/)) {
99
+ const val = trimmed.match(/^\s+-\s+(.+)/)[1].trim();
100
+ if (!meta[arrayKey])
101
+ meta[arrayKey] = [];
102
+ meta[arrayKey].push(val);
103
+ continue;
104
+ }
105
+ else if (inArray && !trimmed.match(/^\s+-/)) {
106
+ inArray = false;
107
+ }
108
+ // Nested object value
109
+ if (inNested && trimmed.match(/^\s+\w+:/)) {
110
+ const nestedMatch = trimmed.match(/^\s+(\w+):\s*(.*)/);
111
+ if (nestedMatch) {
112
+ const val = nestedMatch[2].trim();
113
+ if (val.startsWith('[') && val.endsWith(']')) {
114
+ nestedObj[nestedMatch[1]] = val.slice(1, -1).split(',').map(s => s.trim());
115
+ }
116
+ else if (val) {
117
+ nestedObj[nestedMatch[1]] = val;
118
+ }
119
+ else {
120
+ // Start nested array
121
+ inArray = true;
122
+ arrayKey = `${nestedKey}.${nestedMatch[1]}`;
123
+ nestedObj[nestedMatch[1]] = [];
124
+ const origArrayKey = arrayKey;
125
+ // Redirect array pushes into nested obj
126
+ Object.defineProperty(meta, origArrayKey, {
127
+ get: () => nestedObj[nestedMatch[1]],
128
+ set: (v) => { nestedObj[nestedMatch[1]] = v; },
129
+ configurable: true,
130
+ });
131
+ }
132
+ continue;
133
+ }
134
+ }
135
+ else if (inNested && !trimmed.match(/^\s/)) {
136
+ meta[nestedKey] = nestedObj;
137
+ inNested = false;
138
+ nestedObj = {};
139
+ }
140
+ // Top-level key
141
+ const kvMatch = trimmed.match(/^(\w[\w-]*):\s*(.*)/);
142
+ if (kvMatch) {
143
+ const [, key, val] = kvMatch;
144
+ const trimVal = val.trim();
145
+ if (!trimVal) {
146
+ // Could be start of array or nested object — check next line
147
+ currentKey = key;
148
+ inArray = true;
149
+ arrayKey = key;
150
+ meta[key] = [];
151
+ continue;
152
+ }
153
+ if (trimVal.startsWith('[') && trimVal.endsWith(']')) {
154
+ meta[key] = trimVal.slice(1, -1).split(',').map(s => s.trim());
155
+ }
156
+ else if (trimVal === 'true') {
157
+ meta[key] = true;
158
+ }
159
+ else if (trimVal === 'false') {
160
+ meta[key] = false;
161
+ }
162
+ else if (/^\d+$/.test(trimVal)) {
163
+ meta[key] = parseInt(trimVal, 10);
164
+ }
165
+ else {
166
+ meta[key] = trimVal;
167
+ }
168
+ }
169
+ }
170
+ // Flush any pending nested
171
+ if (inNested)
172
+ meta[nestedKey] = nestedObj;
173
+ return { meta, body: match[2] };
174
+ }
175
+ //# sourceMappingURL=agent-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../../../src/server/agents/agent-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Agent Runner — executes a single agent tick via LLM
3
+ *
4
+ * This is the core of the autonomous agent system. Each tick:
5
+ * 1. Builds a system prompt with workspace context + agent state
6
+ * 2. Builds a scoped tool set (graph + MCP connectors)
7
+ * 3. Sends the agent's instructions as the user message
8
+ * 4. LLM reasons, calls tools, produces response
9
+ * 5. Parses response for findings and AGENT_OK
10
+ *
11
+ * Uses the Pi-Mono Agent class (same as the chat orchestrator)
12
+ * but with scoped tools and a single-turn prompt.
13
+ */
14
+ import type { WorkspaceManager } from '../../core/workspace-manager.js';
15
+ import type { WsHub } from '../ws-hub.js';
16
+ import type { AgentConfig, AgentState, AgentFinding } from './types.js';
17
+ export interface AgentTickResult {
18
+ findings: AgentFinding[];
19
+ response: string;
20
+ status: 'ok' | 'agent_ok' | 'error';
21
+ toolCalls: Array<{
22
+ tool: string;
23
+ input: any;
24
+ }>;
25
+ }
26
+ /**
27
+ * Run a single agent tick — one LLM call with tools.
28
+ */
29
+ export declare function runAgentTick(config: AgentConfig, state: AgentState, workspaceManager: WorkspaceManager, wsHub?: WsHub): Promise<AgentTickResult>;
30
+ /**
31
+ * Parse checkpoint data from response.
32
+ */
33
+ export declare function parseCheckpoint(response: string): Record<string, any> | null;