@rubytech/create-maxy-code 0.1.39 → 0.1.40
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/index.js +35 -101
- package/dist/uninstall.js +11 -102
- package/package.json +1 -1
- package/payload/platform/plugins/docs/references/deployment.md +7 -3
- package/payload/platform/plugins/docs/references/platform.md +1 -1
- package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/config.js +6 -1
- package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/hooks-discovery.d.ts +7 -0
- package/payload/platform/services/claude-session-manager/dist/hooks-discovery.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/hooks-discovery.js +90 -0
- package/payload/platform/services/claude-session-manager/dist/hooks-discovery.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +62 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +22 -2
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +3 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +10 -3
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +54 -0
- package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js +111 -0
- package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +4 -2
- package/payload/platform/templates/agents/admin/SOUL.md +8 -14
- package/payload/server/{chunk-NNHHGQJL.js → chunk-4P2MPERV.js} +6 -163
- package/payload/server/{chunk-3G6JMV7N.js → chunk-MEGIQYUD.js} +1 -1
- package/payload/server/{chunk-QC5LHYPH.js → chunk-XJVJ2B2Q.js} +1 -1
- package/payload/server/{cloudflare-task-tracker-NEB3X6O2.js → cloudflare-task-tracker-R6MMORFU.js} +2 -2
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/public/assets/{Checkbox-CmCjmfJy.js → Checkbox-6lLDKzMP.js} +1 -1
- package/payload/server/public/assets/{admin-CtodW6As.js → admin-DO9W2D9g.js} +1 -1
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CfOjbx0H.js → architectureDiagram-Q4EWVU46-BbLtk_k6.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-D0kA2C9i.js → blockDiagram-DXYQGD6D-B9IgcgeJ.js} +1 -1
- package/payload/server/public/assets/{brand-6hKfBgOI.css → brand-DQrOw38P.css} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CDgXiXgj.js → c4Diagram-AHTNJAMY-BrvPS09f.js} +1 -1
- package/payload/server/public/assets/channel-Bmc1qlCD.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-BfBTcT5X.js → chunk-336JU56O-DXOr0ZnC.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-BdSSZ1Kw.js → chunk-426QAEUC-BFW4zwrV.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-UvE1im9g.js → chunk-4TB4RGXK-D7_xc8xf.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-Dx4DslXz.js → chunk-5FUZZQ4R-CdCSpb8j.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-CNHawhLJ.js → chunk-5PVQY5BW-BVgnD9QR.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-Rmjv-1et.js → chunk-EDXVE4YY-CYrT1Tom.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-CL-LeH3r.js → chunk-ENJZ2VHE-B70d0jN7.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-B2MFOJDt.js → chunk-ICPOFSXX-BcLouRbd.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-BxcIcCt5.js → chunk-OYMX7WX6-C2ja2fPj.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-COzwOBrY.js → chunk-U2HBQHQK-CCjoTpL6.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-B0rjT5hL.js → chunk-X2U36JSP-QIVkp-XR.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-pwrIw0XH.js → chunk-YZCP3GAM-qD9rebhx.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-BXpeAm0k.js → chunk-ZZ45TVLE-C0J_f05H.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-RVZorqSk.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BEZem5bl.js +1 -0
- package/payload/server/public/assets/clone-B6eXIhiR.js +1 -0
- package/payload/server/public/assets/{dagre-DjOJn05k.js → dagre-B3cA7jId.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-PczvQiEh.js → dagre-KV5264BT-C8lVFO5U.js} +1 -1
- package/payload/server/public/assets/data-BaSmBQ7U.js +1 -0
- package/payload/server/public/assets/{device-url-actions-C55ZS_Zg.js → device-url-actions-qu2-XiHc.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-D477xo5F.js → diagram-5BDNPKRD-BYkcTelK.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-C-HAtbtT.js → diagram-G4DWMVQ6-B6f_WR4j.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-B9wus4H0.js → diagram-MMDJMWI5-ALaKcN6w.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-UMZLloFr.js → diagram-TYMM5635-CkVg3crF.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-B8E52Mp4.js → erDiagram-SMLLAGMA-DszlTGIQ.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-CUel34tq.js → flowDiagram-DWJPFMVM-C9-FqSlk.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BfwE-Xav.js → ganttDiagram-T4ZO3ILL-faJU-5Zy.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-2d6tXRIM.js → gitGraphDiagram-UUTBAWPF-Cck8_tiG.js} +1 -1
- package/payload/server/public/assets/{graph-labels-Bg2Bzelb.js → graph-labels-COhLbJD0.js} +1 -1
- package/payload/server/public/assets/graph-qg6fkRyC.js +1 -0
- package/payload/server/public/assets/{graphlib-CCo9-wNJ.js → graphlib-CYRxeBXj.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-DB1SVWL6.js → infoDiagram-42DDH7IO-CLjEjhJX.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-CdeMUTYS.js → ishikawaDiagram-UXIWVN3A-nSIaVXdw.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-D8x8TUoc.js → journeyDiagram-VCZTEJTY-DuKq7d3g.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Cmkhd1mO.js → kanban-definition-6JOO6SKY-Bt5xqHfY.js} +1 -1
- package/payload/server/public/assets/{line-CoHkpBv3.js → line-BgV8qCP_.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-C7R2PfZC.js → mermaid-parser.core-DQzl__pY.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-lQaq-kll.js → mermaid.core-BAPEOjwh.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CsPq3pX1.js → mindmap-definition-QFDTVHPH-CmMBrI79.js} +1 -1
- package/payload/server/public/assets/{page-DwEaAdVp.js → page-BoDdtGsH.js} +1 -1
- package/payload/server/public/assets/{page-CBKzjUHO.js → page-D_NCNi5j.js} +1 -1
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-FZH9sTnP.js → pieDiagram-DEJITSTG-BhsR9k6j.js} +1 -1
- package/payload/server/public/assets/{public-hGLzxhE_.js → public-DCcGKIMW.js} +4 -4
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-9poxfoqh.js → quadrantDiagram-34T5L4WZ-DSKV6d_A.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-Ce7iOdT_.js → requirementDiagram-MS252O5E-BccM48AI.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DINuXatI.js → sankeyDiagram-XADWPNL6-C0pxiQfn.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-CSMec3EK.js → sequenceDiagram-FGHM5R23-BVsUIJsW.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-15DKzypj.js → stateDiagram-FHFEXIEX-lqYQZ-F1.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-D2eHThhC.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BxIRc9Pu.js → timeline-definition-GMOUNBTQ-D-LxYOHq.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-DdgRyU55.js → vennDiagram-DHZGUBPP-BNHzvNba.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-CKvhU1Uj.js → wardleyDiagram-NUSXRM2D-BfXR9l5s.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-d0V1V4PD.js → xychartDiagram-5P7HB3ND-CL7mVEbT.js} +1 -1
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +6 -6
- package/payload/server/public/index.html +8 -8
- package/payload/server/public/public.html +5 -5
- package/payload/server/server.js +981 -859
- package/payload/server/public/assets/channel-DA7MGMzQ.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-DqfmcWSr.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BVOMSbZ_.js +0 -1
- package/payload/server/public/assets/clone-Byp7hagU.js +0 -1
- package/payload/server/public/assets/data-A7azIkZU.js +0 -1
- package/payload/server/public/assets/graph-Dx83EhtP.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-AcaK_QfD.js +0 -1
- /package/payload/server/public/assets/{brand-DXOx08r0.js → brand-Bky-hMVw.js} +0 -0
|
@@ -82,12 +82,56 @@ function renderDormantPlugins(plugins) {
|
|
|
82
82
|
const inner = lines.join('\n');
|
|
83
83
|
return { body: inner, bytes: Buffer.byteLength(inner, 'utf8') };
|
|
84
84
|
}
|
|
85
|
+
function renderPluginManifest(plugins) {
|
|
86
|
+
if (!plugins || plugins.length === 0)
|
|
87
|
+
return { body: null, bytes: 0 };
|
|
88
|
+
const parts = [];
|
|
89
|
+
for (const p of plugins) {
|
|
90
|
+
parts.push(`## ${p.name}`);
|
|
91
|
+
parts.push(p.description);
|
|
92
|
+
if (p.tools.length > 0) {
|
|
93
|
+
parts.push('Tools:');
|
|
94
|
+
for (const t of p.tools) {
|
|
95
|
+
parts.push(t.description ? `- ${t.name}: ${t.description}` : `- ${t.name}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (p.skills.length > 0) {
|
|
99
|
+
parts.push('Skills:');
|
|
100
|
+
for (const s of p.skills) {
|
|
101
|
+
parts.push(s.description ? `- ${s.name}: ${s.description}` : `- ${s.name}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
parts.push('');
|
|
105
|
+
}
|
|
106
|
+
const inner = parts.join('\n').replace(/\n+$/, '');
|
|
107
|
+
return { body: inner, bytes: Buffer.byteLength(inner, 'utf8') };
|
|
108
|
+
}
|
|
109
|
+
function renderSpecialistDomains(domains) {
|
|
110
|
+
if (!domains || domains.length === 0)
|
|
111
|
+
return { body: null, bytes: 0 };
|
|
112
|
+
const parts = [];
|
|
113
|
+
for (const d of domains) {
|
|
114
|
+
parts.push(`## ${d.name}`);
|
|
115
|
+
parts.push(d.description);
|
|
116
|
+
if (d.tools.length > 0) {
|
|
117
|
+
parts.push('Tools:');
|
|
118
|
+
for (const t of d.tools) {
|
|
119
|
+
parts.push(t.description ? `- ${t.name}: ${t.description}` : `- ${t.name}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
parts.push('');
|
|
123
|
+
}
|
|
124
|
+
const inner = parts.join('\n').replace(/\n+$/, '');
|
|
125
|
+
return { body: inner, bytes: Buffer.byteLength(inner, 'utf8') };
|
|
126
|
+
}
|
|
85
127
|
/** Pure renderer — no file IO. The block layout is the source of truth for
|
|
86
128
|
* both the production `composeAppendSystemPrompt` (which reads files first)
|
|
87
129
|
* and the boot-time self-test (which feeds synthetic content). */
|
|
88
130
|
function renderAppendBlock(host, identityContent, soulContent, extras) {
|
|
89
131
|
const aboutOwner = renderAboutOwner(extras.aboutOwner);
|
|
90
132
|
const dormantPlugins = renderDormantPlugins(extras.dormantPlugins);
|
|
133
|
+
const pluginManifest = renderPluginManifest(extras.activePlugins);
|
|
134
|
+
const specialistDomains = renderSpecialistDomains(extras.specialistDomains);
|
|
91
135
|
const tunnelLine = host.tunnelUrl ? host.tunnelUrl : 'none';
|
|
92
136
|
const sections = [
|
|
93
137
|
'<host>',
|
|
@@ -109,6 +153,12 @@ function renderAppendBlock(host, identityContent, soulContent, extras) {
|
|
|
109
153
|
if (aboutOwner.body !== null) {
|
|
110
154
|
sections.push('<about-owner>', aboutOwner.body, '</about-owner>');
|
|
111
155
|
}
|
|
156
|
+
if (specialistDomains.body !== null) {
|
|
157
|
+
sections.push('<specialist-domains>', specialistDomains.body, '</specialist-domains>');
|
|
158
|
+
}
|
|
159
|
+
if (pluginManifest.body !== null) {
|
|
160
|
+
sections.push('<plugin-manifest>', pluginManifest.body, '</plugin-manifest>');
|
|
161
|
+
}
|
|
112
162
|
if (dormantPlugins.body !== null) {
|
|
113
163
|
sections.push('<dormant-plugins>', dormantPlugins.body, '</dormant-plugins>');
|
|
114
164
|
}
|
|
@@ -116,6 +166,8 @@ function renderAppendBlock(host, identityContent, soulContent, extras) {
|
|
|
116
166
|
block: sections.join('\n'),
|
|
117
167
|
aboutOwnerBytes: aboutOwner.bytes,
|
|
118
168
|
dormantPluginsBytes: dormantPlugins.bytes,
|
|
169
|
+
pluginManifestBytes: pluginManifest.bytes,
|
|
170
|
+
specialistDomainsBytes: specialistDomains.bytes,
|
|
119
171
|
};
|
|
120
172
|
}
|
|
121
173
|
export function composeAppendSystemPrompt(host, sources, extras = {}) {
|
|
@@ -141,8 +193,48 @@ export function composeAppendSystemPrompt(host, sources, extras = {}) {
|
|
|
141
193
|
soulBytes: Buffer.byteLength(soul.content, 'utf8'),
|
|
142
194
|
aboutOwnerBytes: rendered.aboutOwnerBytes,
|
|
143
195
|
dormantPluginsBytes: rendered.dormantPluginsBytes,
|
|
196
|
+
pluginManifestBytes: rendered.pluginManifestBytes,
|
|
197
|
+
specialistDomainsBytes: rendered.specialistDomainsBytes,
|
|
144
198
|
};
|
|
145
199
|
}
|
|
200
|
+
/** Boot-time IDENTITY-vs-composer drift assertion. Parses IDENTITY.md at
|
|
201
|
+
* `<accountDir>/agents/admin/IDENTITY.md`, extracts every `<sentinel-name>`
|
|
202
|
+
* reference the prose makes, and confirms the composer would emit each one
|
|
203
|
+
* for a sample admin session. The synthetic inputs exercise every optional
|
|
204
|
+
* sentinel so a missing emit is visible regardless of operator state.
|
|
205
|
+
*
|
|
206
|
+
* Returns ok:false with the first sentinel IDENTITY.md names that the
|
|
207
|
+
* composer does not emit. The caller LOUD-FAILs the manager start. */
|
|
208
|
+
export function runIdentityDriftAssertion(identityContent) {
|
|
209
|
+
// IDENTITY.md references sentinels as backticked `<name>` tokens in prose,
|
|
210
|
+
// e.g. "`<plugin-manifest>` lists each plugin …". Extract the inner names.
|
|
211
|
+
const referenced = new Set();
|
|
212
|
+
const re = /`<([a-z][a-z0-9-]*)>`/gi;
|
|
213
|
+
let m;
|
|
214
|
+
while ((m = re.exec(identityContent)) !== null) {
|
|
215
|
+
referenced.add(m[1]);
|
|
216
|
+
}
|
|
217
|
+
// Render with maximally-populated synthetic inputs.
|
|
218
|
+
const host = {
|
|
219
|
+
hostname: 'drift-check',
|
|
220
|
+
lanIPv4: '127.0.0.1',
|
|
221
|
+
adminUrl: 'http://drift-check:0',
|
|
222
|
+
tunnelUrl: null,
|
|
223
|
+
};
|
|
224
|
+
const rendered = renderAppendBlock(host, '# drift identity', '# drift soul', {
|
|
225
|
+
aboutOwner: { ok: true, body: 'drift owner' },
|
|
226
|
+
dormantPlugins: [{ name: 'p', description: 'd' }],
|
|
227
|
+
activePlugins: [{ name: 'p', description: 'd', tools: [{ name: 't' }], skills: [{ name: 's' }] }],
|
|
228
|
+
specialistDomains: [{ name: 'sp', description: 'd', tools: [{ name: 't' }] }],
|
|
229
|
+
});
|
|
230
|
+
const checked = Array.from(referenced).sort();
|
|
231
|
+
for (const name of checked) {
|
|
232
|
+
if (!rendered.block.includes(`<${name}>`)) {
|
|
233
|
+
return { ok: false, missing: name, sentinelsChecked: checked };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return { ok: true, sentinelsChecked: checked };
|
|
237
|
+
}
|
|
146
238
|
/** Boot-time self-test: render the block with synthetic inputs that exercise
|
|
147
239
|
* every optional sentinel, and assert the expected tags appear. Returns
|
|
148
240
|
* ok:true on success, ok:false with the first missing tag on drift. The
|
|
@@ -159,6 +251,21 @@ export function runSystemPromptSelfTest() {
|
|
|
159
251
|
const rendered = renderAppendBlock(host, '# self-test identity', '# self-test soul', {
|
|
160
252
|
aboutOwner: { ok: true, body: '## About the Owner\n\nself-test owner' },
|
|
161
253
|
dormantPlugins: [{ name: 'cloudflare', description: 'self-test plugin description' }],
|
|
254
|
+
activePlugins: [
|
|
255
|
+
{
|
|
256
|
+
name: 'self-test-plugin',
|
|
257
|
+
description: 'self-test plugin description',
|
|
258
|
+
tools: [{ name: 'self-test-tool', description: 'self-test tool description' }],
|
|
259
|
+
skills: [{ name: 'self-test-skill', description: 'self-test skill description' }],
|
|
260
|
+
},
|
|
261
|
+
],
|
|
262
|
+
specialistDomains: [
|
|
263
|
+
{
|
|
264
|
+
name: 'self-test-specialist',
|
|
265
|
+
description: 'self-test specialist description',
|
|
266
|
+
tools: [{ name: 'self-test-specialist-tool', description: 'self-test specialist tool description' }],
|
|
267
|
+
},
|
|
268
|
+
],
|
|
162
269
|
});
|
|
163
270
|
const required = [
|
|
164
271
|
'<host>',
|
|
@@ -171,6 +278,10 @@ export function runSystemPromptSelfTest() {
|
|
|
171
278
|
'</soul>',
|
|
172
279
|
'<about-owner>',
|
|
173
280
|
'</about-owner>',
|
|
281
|
+
'<plugin-manifest>',
|
|
282
|
+
'</plugin-manifest>',
|
|
283
|
+
'<specialist-domains>',
|
|
284
|
+
'</specialist-domains>',
|
|
174
285
|
'<dormant-plugins>',
|
|
175
286
|
'</dormant-plugins>',
|
|
176
287
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,oBAAoB;AACpB,EAAE;AACF,2EAA2E;AAC3E,oEAAoE;AACpE,mDAAmD;AACnD,6EAA6E;AAC7E,4EAA4E;AAC5E,4DAA4D;AAC5D,iEAAiE;AACjE,oFAAoF;AACpF,iEAAiE;AACjE,gFAAgF;AAChF,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,kFAAkF;AAClF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yEAAyE;AACzE,6CAA6C;AAC7C,2EAA2E;AAC3E,mFAAmF;AACnF,mFAAmF;AACnF,gFAAgF;AAChF,gFAAgF;AAChF,mFAAmF;AACnF,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,2EAA2E;AAC3E,WAAW;AACX,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,8CAA8C;AAC9C,EAAE;AACF,wCAAwC;AACxC,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,8EAA8E;AAC9E,6CAA6C;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,14 @@ These three rules win when anything else in this prompt conflicts with them.
|
|
|
8
8
|
2. **Be concise.** Three sentences or fewer. If you cannot answer in three, ask in five words.
|
|
9
9
|
3. **Show your evidence.** Gather evidence before forming a hypothesis. One measurement beats three guesses.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Never stop seeking
|
|
12
12
|
|
|
13
|
-
The more you know about the owner, the better the work you can do. Never stop seeking information about them
|
|
13
|
+
The more you know about the owner, the better the work you can do. Never stop seeking information about them. Prioritise what is pertinent to their current activities and objectives. The owner's activities and objectives are themselves first-class subjects to ask about. Every turn that does not advance what you know about them — or what you can do for them — is a turn you can do better next time.
|
|
14
14
|
|
|
15
15
|
Everything you learn in conversation is recorded for you by a background agent that watches every completed turn. You do not write to the graph yourself. Ask, listen, and act on what you have already been told; the recording is taken care of.
|
|
16
16
|
|
|
17
|
+
## About the owner
|
|
18
|
+
|
|
17
19
|
Remote access and public-facing channels are optional. Cloudflare Tunnel exposes the platform on a custom domain; WhatsApp, Telegram, and email reach the owner without one. If none is set up, explain each briefly when the conversation surfaces a need, and offer to assist. The execution paths are `setup-tunnel` (Cloudflare), the WhatsApp pairing flow, and the Telegram channel plugin.
|
|
18
20
|
|
|
19
21
|
When the owner declines an offer, record the decline as a property on `Person` (e.g. `preferences.declinedRemoteAccess: true`) so you do not re-ask.
|
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
# Soul
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
The architectural sensibility of an individual contributor. The operator whose output is a function of their own thinking, not their headcount. Pathologically averse to friction and noise in any process. Treats time, knowledge, and money as the three currencies of every decision and works to maximise all three for the owner.
|
|
6
|
-
|
|
7
|
-
Quantitative by instinct. Comfortable with derivatives, distributions, and rates of change; comfortable with markdown, file paths, and graph queries. The same precision applied to either.
|
|
3
|
+
You are ${PRODUCT_NAME}, an AI operations manager. You free the operator from low-value desk work so their time goes to the customer chain.
|
|
8
4
|
|
|
9
|
-
|
|
5
|
+
## Phase 1 standing offer
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
Three things you do end-to-end, every time the conversation surfaces the need. Offer the relevant one in plain language, then run it.
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
- **Brochure production.** A listing URL plus an agent URL becomes a print-ready A4 brochure (HTML and PDF) without manual layout.
|
|
10
|
+
- **Preval production.** Property facts plus comparable data become a written pre-valuation the operator sends to a vendor before the appraisal visit.
|
|
11
|
+
- **Loop CRM management.** Read and write across all 8 Loop resource groups (properties, people, viewings, feedback, team, marketing, customer preferences, supplier operations) on the operator's behalf.
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
State what is true. Caveat what is uncertain. Never confident wrong over honestly-checked. A flat "I'd need to check that" beats a confident guess.
|
|
18
|
-
|
|
19
|
-
## Greeting
|
|
13
|
+
## Personality
|
|
20
14
|
|
|
21
|
-
|
|
15
|
+
Precise. No filler, no narration of internal process. Direct without being curt. State what is true, caveat what is uncertain, never confident-wrong over honestly-checked.
|
|
@@ -86,7 +86,6 @@ function cacheConversationId(cacheKey, conversationId) {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
var GREETING_DIRECTIVE = "[New session. Greet the visitor.]";
|
|
89
|
-
var DIRECTIVE_PREFIX = "[New session.";
|
|
90
89
|
async function ensureConversation(accountId, agentType, cacheKey, visitorId, agentSlug, userId, channelOverride, channelAddressOverride) {
|
|
91
90
|
const cached = getCachedConversationId(cacheKey);
|
|
92
91
|
if (cached) return { conversationId: cached, created: false };
|
|
@@ -235,8 +234,7 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
|
|
|
235
234
|
// :WhatsAppMessage\u2192:UserMessage, crossing the live-channel chain.
|
|
236
235
|
// The live writer's tail predicate is sublabel-scoped to
|
|
237
236
|
// :WhatsAppMessage; this clause is the matching defence on the
|
|
238
|
-
// agent side.
|
|
239
|
-
// UserMessage/AssistantMessage sublabels under :Message.
|
|
237
|
+
// agent side.
|
|
240
238
|
// Capture whether THIS write's guard will fire. Read c.summary
|
|
241
239
|
// before the SET so the boolean reflects the pre-state, not the
|
|
242
240
|
// post-state \u2014 a false positive otherwise when a new user message
|
|
@@ -560,53 +558,26 @@ async function verifyAndGetConversationUpdatedAt(conversationId, accountId) {
|
|
|
560
558
|
await session.close();
|
|
561
559
|
}
|
|
562
560
|
}
|
|
563
|
-
var LIST_BACKFILL_CAP = 3;
|
|
564
561
|
async function listAdminSessions(accountId, userId, limit = 20) {
|
|
565
562
|
const session = getSession();
|
|
566
563
|
try {
|
|
567
564
|
const result = await session.run(
|
|
568
565
|
`MATCH (c:Conversation {accountId: $accountId, agentType: 'admin', userId: $userId})
|
|
569
566
|
WHERE NOT c:Trashed
|
|
570
|
-
WITH c
|
|
571
|
-
ORDER BY c.updatedAt DESC
|
|
572
|
-
LIMIT $limit
|
|
573
|
-
CALL {
|
|
574
|
-
WITH c
|
|
575
|
-
OPTIONAL MATCH (m:Message)-[:PART_OF]->(c)
|
|
576
|
-
WHERE m.role = 'user'
|
|
577
|
-
AND c.name IS NULL
|
|
578
|
-
AND NOT (m.content STARTS WITH '[New session.')
|
|
579
|
-
AND NOT (m.content STARTS WITH '{"')
|
|
580
|
-
AND size(m.content) >= 4
|
|
581
|
-
RETURN m.content AS content, m.createdAt AS createdAt
|
|
582
|
-
ORDER BY m.createdAt ASC
|
|
583
|
-
LIMIT 1
|
|
584
|
-
}
|
|
585
567
|
RETURN c.conversationId AS conversationId,
|
|
586
568
|
c.name AS name,
|
|
587
569
|
c.updatedAt AS updatedAt,
|
|
588
|
-
c.channel AS channel
|
|
589
|
-
|
|
570
|
+
c.channel AS channel
|
|
571
|
+
ORDER BY c.updatedAt DESC
|
|
572
|
+
LIMIT $limit`,
|
|
590
573
|
{ accountId, userId, limit: neo4j.int(limit) }
|
|
591
574
|
);
|
|
592
|
-
|
|
575
|
+
return result.records.map((r) => ({
|
|
593
576
|
conversationId: r.get("conversationId"),
|
|
594
577
|
name: r.get("name"),
|
|
595
578
|
updatedAt: String(r.get("updatedAt")),
|
|
596
|
-
channel: r.get("channel")
|
|
597
|
-
firstSubstantiveUserMessage: r.get("firstSubstantiveUserMessage")
|
|
579
|
+
channel: r.get("channel")
|
|
598
580
|
}));
|
|
599
|
-
let backfillsKicked = 0;
|
|
600
|
-
for (const row of rows) {
|
|
601
|
-
if (backfillsKicked >= LIST_BACKFILL_CAP) break;
|
|
602
|
-
if (row.name !== null) continue;
|
|
603
|
-
const seed = row.firstSubstantiveUserMessage;
|
|
604
|
-
if (!seed || !isMessageUseful(seed)) continue;
|
|
605
|
-
backfillsKicked++;
|
|
606
|
-
autoLabelSession(row.conversationId, seed).catch(() => {
|
|
607
|
-
});
|
|
608
|
-
}
|
|
609
|
-
return rows.map(({ conversationId, name, updatedAt, channel }) => ({ conversationId, name, updatedAt, channel }));
|
|
610
581
|
} catch (err) {
|
|
611
582
|
console.error(`[persist] listAdminSessions failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
612
583
|
return [];
|
|
@@ -637,28 +608,11 @@ async function deleteConversation(conversationId) {
|
|
|
637
608
|
await session.close();
|
|
638
609
|
}
|
|
639
610
|
}
|
|
640
|
-
var GENERIC_MESSAGE = /^(h(i|ello|ey|owdy)|yo|sup|thanks|thank you|ok|okay|yes|no|good\s*(morning|afternoon|evening|night)|greetings|what'?s\s*up)[\s!?.,:;]*$/i;
|
|
641
611
|
var SESSION_LABEL_MSG_CAP = 500;
|
|
642
612
|
var SESSION_LABEL_TIMEOUT_MS = 15e3;
|
|
643
613
|
var SESSION_LABEL_MODEL = HAIKU_MODEL;
|
|
644
614
|
var SESSION_LABEL_MAX_WORDS = 6;
|
|
645
|
-
var SESSION_LABEL_MAX_ATTEMPTS = 3;
|
|
646
615
|
var SESSION_LABEL_MAX_STDERR = 2048;
|
|
647
|
-
function isMessageUseful(message) {
|
|
648
|
-
const trimmed = message.trim();
|
|
649
|
-
if (trimmed.length < 4) return false;
|
|
650
|
-
if (trimmed.startsWith('{"')) return false;
|
|
651
|
-
if (GENERIC_MESSAGE.test(trimmed)) return false;
|
|
652
|
-
if (trimmed.startsWith(DIRECTIVE_PREFIX)) return false;
|
|
653
|
-
return true;
|
|
654
|
-
}
|
|
655
|
-
function totalFailures(f) {
|
|
656
|
-
return f.skip + f.error;
|
|
657
|
-
}
|
|
658
|
-
function failureBreakdown(f) {
|
|
659
|
-
return `skip:${f.skip} error:${f.error}`;
|
|
660
|
-
}
|
|
661
|
-
var labelAccumulator = /* @__PURE__ */ new Map();
|
|
662
616
|
var _spawnOverride = null;
|
|
663
617
|
var SESSION_LABEL_SYSTEM = `You are a session labeler. Given the opening messages of a conversation with an AI assistant, produce a concise topic label.
|
|
664
618
|
|
|
@@ -729,117 +683,6 @@ ${userContent}`;
|
|
|
729
683
|
});
|
|
730
684
|
});
|
|
731
685
|
}
|
|
732
|
-
async function autoLabelSession(conversationId, userMessage) {
|
|
733
|
-
if (!conversationId) return;
|
|
734
|
-
if (!isMessageUseful(userMessage)) {
|
|
735
|
-
const trimmed = userMessage.trim();
|
|
736
|
-
const reason = trimmed.startsWith('{"') ? "JSON envelope" : trimmed.startsWith(DIRECTIVE_PREFIX) ? "directive" : GENERIC_MESSAGE.test(trimmed) ? "greeting" : trimmed.length < 4 ? "too short" : "directive";
|
|
737
|
-
console.error(`[persist] autoLabel: skipped ${conversationId.slice(0, 8)}\u2026 \u2014 ${reason}`);
|
|
738
|
-
return;
|
|
739
|
-
}
|
|
740
|
-
try {
|
|
741
|
-
const preCheck = getSession();
|
|
742
|
-
try {
|
|
743
|
-
const res = await preCheck.run(
|
|
744
|
-
`MATCH (c:Conversation {conversationId: $conversationId})
|
|
745
|
-
OPTIONAL MATCH (m:Message)-[:PART_OF]->(c)
|
|
746
|
-
WHERE m.role = 'user'
|
|
747
|
-
WITH c, count(m) AS userCount
|
|
748
|
-
RETURN c.name AS name, userCount`,
|
|
749
|
-
{ conversationId }
|
|
750
|
-
);
|
|
751
|
-
const firstRecord = res.records[0];
|
|
752
|
-
const existingName = firstRecord?.get("name");
|
|
753
|
-
const userCountRaw = firstRecord?.get("userCount");
|
|
754
|
-
const userCount = typeof userCountRaw === "object" && userCountRaw !== null ? Number(userCountRaw) : Number(userCountRaw ?? 0);
|
|
755
|
-
if (existingName) {
|
|
756
|
-
console.error(`[persist] autoLabel: already named ${conversationId.slice(0, 8)}\u2026 \u2014 skipping`);
|
|
757
|
-
labelAccumulator.delete(conversationId);
|
|
758
|
-
return;
|
|
759
|
-
}
|
|
760
|
-
if (userCount > 3) {
|
|
761
|
-
console.error(`[persist] autoLabel: past autolabel window ${conversationId.slice(0, 8)}\u2026 \u2014 userCount=${userCount}, skipping`);
|
|
762
|
-
labelAccumulator.delete(conversationId);
|
|
763
|
-
return;
|
|
764
|
-
}
|
|
765
|
-
} finally {
|
|
766
|
-
await preCheck.close();
|
|
767
|
-
}
|
|
768
|
-
} catch (err) {
|
|
769
|
-
console.error(`[persist] autoLabel: pre-check read failed for ${conversationId.slice(0, 8)}\u2026 \u2014 proceeding: ${err instanceof Error ? err.message : String(err)}`);
|
|
770
|
-
}
|
|
771
|
-
let entry = labelAccumulator.get(conversationId);
|
|
772
|
-
if (!entry) {
|
|
773
|
-
entry = {
|
|
774
|
-
messages: [],
|
|
775
|
-
pending: false,
|
|
776
|
-
failures: { skip: 0, error: 0 }
|
|
777
|
-
};
|
|
778
|
-
labelAccumulator.set(conversationId, entry);
|
|
779
|
-
}
|
|
780
|
-
if (totalFailures(entry.failures) >= SESSION_LABEL_MAX_ATTEMPTS) {
|
|
781
|
-
console.error(`[persist] autoLabel: evicted ${conversationId.slice(0, 8)}\u2026 after ${SESSION_LABEL_MAX_ATTEMPTS} failed-attempts (${failureBreakdown(entry.failures)})`);
|
|
782
|
-
labelAccumulator.delete(conversationId);
|
|
783
|
-
return;
|
|
784
|
-
}
|
|
785
|
-
entry.messages.push(userMessage.trim());
|
|
786
|
-
if (entry.pending) {
|
|
787
|
-
console.error(`[persist] autoLabel: accumulated for ${conversationId.slice(0, 8)}\u2026 (pending, ${entry.messages.length} msgs)`);
|
|
788
|
-
return;
|
|
789
|
-
}
|
|
790
|
-
entry.pending = true;
|
|
791
|
-
try {
|
|
792
|
-
const label = await generateSessionLabel(entry.messages);
|
|
793
|
-
if (!label) {
|
|
794
|
-
entry.failures.skip++;
|
|
795
|
-
console.error(`[persist] autoLabel: generateSessionLabel returned null for ${conversationId.slice(0, 8)}\u2026 (failures ${failureBreakdown(entry.failures)}, ${entry.messages.length} msgs)`);
|
|
796
|
-
entry.pending = false;
|
|
797
|
-
return;
|
|
798
|
-
}
|
|
799
|
-
const fullLabel = `${label} \xB7 ${conversationId.slice(0, 8)}`;
|
|
800
|
-
let embedding = null;
|
|
801
|
-
try {
|
|
802
|
-
embedding = await embed(fullLabel);
|
|
803
|
-
} catch (err) {
|
|
804
|
-
console.error(`[persist] Conversation embedding failed, labelling without: ${err instanceof Error ? err.message : String(err)}`);
|
|
805
|
-
}
|
|
806
|
-
const session = getSession();
|
|
807
|
-
try {
|
|
808
|
-
const result = await session.run(
|
|
809
|
-
`MATCH (c:Conversation {conversationId: $conversationId})
|
|
810
|
-
WHERE c.name IS NULL
|
|
811
|
-
WITH c
|
|
812
|
-
OPTIONAL MATCH (m:Message)-[:PART_OF]->(c)
|
|
813
|
-
WHERE m.role = 'user'
|
|
814
|
-
WITH c, count(m) AS userCount
|
|
815
|
-
WHERE userCount <= 3
|
|
816
|
-
SET c.name = $label, c.updatedAt = datetime()
|
|
817
|
-
${embedding ? ", c.embedding = $embedding" : ""}
|
|
818
|
-
RETURN c.name AS name`,
|
|
819
|
-
{ conversationId, label: fullLabel, ...embedding ? { embedding } : {} }
|
|
820
|
-
);
|
|
821
|
-
if (result.records.length > 0) {
|
|
822
|
-
console.error(`[persist] autoLabel: commit ${conversationId.slice(0, 8)}\u2026 name="${fullLabel}"${embedding ? " (embedded)" : ""}`);
|
|
823
|
-
labelAccumulator.delete(conversationId);
|
|
824
|
-
} else {
|
|
825
|
-
console.error(`[persist] autoLabel: no-op commit ${conversationId.slice(0, 8)}\u2026 (name already set or userCount>3)`);
|
|
826
|
-
labelAccumulator.delete(conversationId);
|
|
827
|
-
}
|
|
828
|
-
} catch (err) {
|
|
829
|
-
entry.failures.error++;
|
|
830
|
-
console.error(`[persist] autoLabelSession failed: ${err instanceof Error ? err.message : String(err)} (failures ${failureBreakdown(entry.failures)})`);
|
|
831
|
-
} finally {
|
|
832
|
-
await session.close();
|
|
833
|
-
}
|
|
834
|
-
} catch (err) {
|
|
835
|
-
const currentEntry = labelAccumulator.get(conversationId);
|
|
836
|
-
if (currentEntry) currentEntry.failures.error++;
|
|
837
|
-
console.error(`[persist] autoLabel: unexpected error \u2014 ${err instanceof Error ? err.message : String(err)}${currentEntry ? ` (failures ${failureBreakdown(currentEntry.failures)})` : ""}`);
|
|
838
|
-
} finally {
|
|
839
|
-
const currentEntry = labelAccumulator.get(conversationId);
|
|
840
|
-
if (currentEntry) currentEntry.pending = false;
|
|
841
|
-
}
|
|
842
|
-
}
|
|
843
686
|
async function renameConversation(conversationId, label) {
|
|
844
687
|
let embedding = null;
|
|
845
688
|
try {
|
package/payload/server/{cloudflare-task-tracker-NEB3X6O2.js → cloudflare-task-tracker-R6MMORFU.js}
RENAMED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
readTunnelState,
|
|
8
8
|
recoverRunningCloudflareTasks,
|
|
9
9
|
resolveUnitGoneVerdict
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-XJVJ2B2Q.js";
|
|
11
|
+
import "./chunk-4P2MPERV.js";
|
|
12
12
|
import "./chunk-JSBRDJBE.js";
|
|
13
13
|
export {
|
|
14
14
|
CLOUDFLARE_TASK_DIAGNOSTICS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./brand-
|
|
1
|
+
import{a as e}from"./brand-Bky-hMVw.js";var t=e();function n({checked:e,onChange:n,label:r,disabled:i}){return(0,t.jsxs)(`label`,{className:`maxy-checkbox${i?` maxy-checkbox--disabled`:``}`,children:[(0,t.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>n(e.target.checked),disabled:i}),(0,t.jsx)(`span`,{className:`maxy-checkbox__box`,children:`✱`}),r&&(0,t.jsx)(`span`,{className:`maxy-checkbox__label`,children:r})]})}export{n as t};
|