@rubytech/create-maxy-code 0.1.35 → 0.1.37
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/package.json +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +12 -0
- package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +109 -0
- package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +114 -0
- package/payload/platform/plugins/admin/skills/unzip-attachment/SKILL.md +1 -1
- package/payload/platform/plugins/contacts/PLUGIN.md +11 -0
- package/payload/platform/plugins/docs/references/internals.md +10 -0
- package/payload/platform/plugins/docs/references/platform.md +11 -4
- package/payload/platform/plugins/email/PLUGIN.md +11 -0
- package/payload/platform/plugins/linkedin-import/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/linkedin-import/PLUGIN.md +5 -5
- package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +3 -1
- package/payload/platform/plugins/linkedin-import/skills/linkedin-import/references/connections.md +2 -2
- package/payload/platform/plugins/memory/PLUGIN.md +11 -0
- package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +2 -0
- package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +6 -4
- package/payload/platform/plugins/outlook/PLUGIN.md +11 -0
- package/payload/platform/plugins/replicate/PLUGIN.md +11 -0
- package/payload/platform/plugins/scheduling/PLUGIN.md +11 -0
- package/payload/platform/plugins/tasks/PLUGIN.md +11 -0
- package/payload/platform/plugins/telegram/PLUGIN.md +11 -0
- package/payload/platform/plugins/waitlist/PLUGIN.md +11 -0
- package/payload/platform/plugins/whatsapp/PLUGIN.md +11 -0
- package/payload/platform/plugins/workflows/PLUGIN.md +11 -0
- package/payload/platform/scripts/seed-neo4j.sh +14 -0
- package/payload/platform/scripts/verify-skill-tool-surface.sh +5 -3
- package/payload/platform/services/claude-session-manager/dist/config.d.ts +0 -5
- package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/config.js +16 -6
- package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +0 -5
- 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 +109 -139
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +63 -4
- 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 +47 -61
- 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 +191 -131
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +43 -37
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.js +72 -61
- package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +34 -4
- package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js +125 -27
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +9 -18
- package/payload/platform/templates/specialists/agents/database-operator.md +27 -70
- package/payload/platform/templates/specialists/agents/librarian.md +55 -0
- package/payload/server/public/assets/{Checkbox-8mOR8-gV.js → Checkbox-DAki3vDW.js} +1 -1
- package/payload/server/public/assets/{admin-CK4V-B9A.js → admin-CyAZtsYZ.js} +1 -1
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-2DgPtOot.js → architectureDiagram-Q4EWVU46-C-hla3Ip.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BilycXVZ.js → blockDiagram-DXYQGD6D-CbzjtNs3.js} +1 -1
- package/payload/server/public/assets/{brand-1_DraUIv.css → brand-Cun0PBrA.css} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CGiIFO5U.js → c4Diagram-AHTNJAMY-B87UblA0.js} +1 -1
- package/payload/server/public/assets/channel-CTNo72W7.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-DxTg1h50.js → chunk-336JU56O-2a2pVlSg.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-DkGPjs0P.js → chunk-426QAEUC-j9NOD8_a.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-D2JaxD6r.js → chunk-4TB4RGXK-Cs872xAq.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-Do3pbAGo.js → chunk-5FUZZQ4R-BnDFbZ_I.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-np5moZSl.js → chunk-5PVQY5BW-Bu5B3Hyf.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-BUFLWwRP.js → chunk-EDXVE4YY-B96Fw4FF.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-BE7Gt41s.js → chunk-ENJZ2VHE-CcGrGQim.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-gOBkROMP.js → chunk-ICPOFSXX-ZRvcI4Ai.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-DR-BkNZa.js → chunk-OYMX7WX6-B6RI9Fbf.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-qLp-uSVE.js → chunk-U2HBQHQK-BYGHVYyo.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-DQiKti0J.js → chunk-X2U36JSP-rwNs-gTO.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-Cd0JhpTo.js → chunk-YZCP3GAM-jPttJRap.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-8u01H3Hy.js → chunk-ZZ45TVLE-DLykWOT5.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-BaV5nDmT.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DOKlCKjY.js +1 -0
- package/payload/server/public/assets/clone-sQSwlSln.js +1 -0
- package/payload/server/public/assets/{dagre-KV5264BT-BBF_zxbi.js → dagre-KV5264BT-C6wSzHX2.js} +1 -1
- package/payload/server/public/assets/{dagre-BfVsOYOv.js → dagre-jnQDnF-5.js} +1 -1
- package/payload/server/public/assets/data-DbkuXcPb.js +1 -0
- package/payload/server/public/assets/{device-url-actions-CJBD3ecO.js → device-url-actions-y1tXNDZx.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-BFHk2a7t.js → diagram-5BDNPKRD-N3X-n90h.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-Be3_qYl2.js → diagram-G4DWMVQ6-vfmbzdPd.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-B3r4XVcu.js → diagram-MMDJMWI5-BETmPx_w.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-BW5EIT4D.js → diagram-TYMM5635-BSUGM4wG.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-DTu4_1Kb.js → erDiagram-SMLLAGMA-CWZ9OwMb.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-CadrjLcA.js → flowDiagram-DWJPFMVM-BpQOQS1a.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-Cn0npD0L.js → ganttDiagram-T4ZO3ILL-Dc59igCS.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-CK3gG5Qm.js → gitGraphDiagram-UUTBAWPF-D6lXg3zl.js} +1 -1
- package/payload/server/public/assets/graph-CC5_6-dg.js +1 -0
- package/payload/server/public/assets/{graph-labels-CPzF6Gbk.js → graph-labels-DFyNH0jb.js} +1 -1
- package/payload/server/public/assets/{graphlib-DFIOO59N.js → graphlib-yG7kH8Fr.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-BohUsXnN.js → infoDiagram-42DDH7IO-TS9Pv8Os.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-tjmA4BU8.js → ishikawaDiagram-UXIWVN3A-BJiJJTq6.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DzBlFESM.js → journeyDiagram-VCZTEJTY-C7PW4fmw.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-BTw9BxK8.js → kanban-definition-6JOO6SKY-BEk21ciD.js} +1 -1
- package/payload/server/public/assets/{line-BYPL6wAj.js → line-DusyVWDE.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-Dmu4fWCS.js → mermaid-parser.core-DeeojQSb.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-Z9vvieC2.js → mermaid.core-p65Lo7Sj.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-BccAnfJ4.js → mindmap-definition-QFDTVHPH-B0jxFxdS.js} +1 -1
- package/payload/server/public/assets/{page-CBTlFm3b.js → page-BeYGnDzI.js} +1 -1
- package/payload/server/public/assets/{page-CDrsNrDO.js → page-x5khmfRx.js} +1 -1
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-CZwxH1nJ.js → pieDiagram-DEJITSTG-DJ5GKYt6.js} +1 -1
- package/payload/server/public/assets/{public-MKWxjwiF.js → public-cnoUs7vq.js} +3 -3
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-BWT4DItX.js → quadrantDiagram-34T5L4WZ-BV7R-kwV.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-CHYkWUEy.js → requirementDiagram-MS252O5E-DRiLzlGN.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-km7p45Ng.js → sankeyDiagram-XADWPNL6-C5-6_cCI.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BT1C0Dw-.js → sequenceDiagram-FGHM5R23-5FXm_VYM.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-hibC19DY.js → stateDiagram-FHFEXIEX-FCQTaGqV.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BdpPhdqg.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-Cnm86NfE.js → timeline-definition-GMOUNBTQ-tvtq62ef.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-ByjQPLzS.js → vennDiagram-DHZGUBPP-Dk-k7CE4.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-CMVrWw7l.js → wardleyDiagram-NUSXRM2D-CZSrqniY.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-Mpc1u3FV.js → xychartDiagram-5P7HB3ND-CpGLpk7Q.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 +128 -106
- package/payload/server/public/assets/channel-DYpIZW3Q.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-nkfy9gg7.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-B-pMmeCC.js +0 -1
- package/payload/server/public/assets/clone-jiTzIER6.js +0 -1
- package/payload/server/public/assets/data-BIOaDoqe.js +0 -1
- package/payload/server/public/assets/graph-ClfU7t1k.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-MuJZxjmU.js +0 -1
- /package/payload/server/public/assets/{brand-CENN2zdq.js → brand-lj7EhWRg.js} +0 -0
|
@@ -31,6 +31,17 @@ tools:
|
|
|
31
31
|
- name: project-complete
|
|
32
32
|
publicAllowlist: false
|
|
33
33
|
metadata: {"platform":{"always":false,"embed":[],"pluginKey":"tasks"}}
|
|
34
|
+
mcp:
|
|
35
|
+
command: node
|
|
36
|
+
args:
|
|
37
|
+
- ${PLATFORM_ROOT}/lib/mcp-spawn-tee/dist/index.js
|
|
38
|
+
- ${PLATFORM_ROOT}/plugins/tasks/mcp/dist/index.js
|
|
39
|
+
env:
|
|
40
|
+
MCP_SPAWN_TEE_NAME: tasks
|
|
41
|
+
LOG_DIR: ${LOG_DIR}
|
|
42
|
+
PLATFORM_ROOT: ${PLATFORM_ROOT}
|
|
43
|
+
ACCOUNT_ID: ${ACCOUNT_ID}
|
|
44
|
+
SESSION_ID: ${SESSION_ID}
|
|
34
45
|
---
|
|
35
46
|
|
|
36
47
|
# Tasks
|
|
@@ -9,6 +9,17 @@ tools:
|
|
|
9
9
|
publicAllowlist: false
|
|
10
10
|
- name: telegram-webhook-register
|
|
11
11
|
publicAllowlist: false
|
|
12
|
+
mcp:
|
|
13
|
+
command: node
|
|
14
|
+
args:
|
|
15
|
+
- ${PLATFORM_ROOT}/lib/mcp-spawn-tee/dist/index.js
|
|
16
|
+
- ${PLATFORM_ROOT}/plugins/telegram/mcp/dist/index.js
|
|
17
|
+
env:
|
|
18
|
+
MCP_SPAWN_TEE_NAME: telegram
|
|
19
|
+
LOG_DIR: ${LOG_DIR}
|
|
20
|
+
PLATFORM_ROOT: ${PLATFORM_ROOT}
|
|
21
|
+
ACCOUNT_ID: ${ACCOUNT_ID}
|
|
22
|
+
SESSION_ID: ${SESSION_ID}
|
|
12
23
|
---
|
|
13
24
|
|
|
14
25
|
# Telegram Setup
|
|
@@ -18,6 +18,17 @@ always: false
|
|
|
18
18
|
embed: false
|
|
19
19
|
lifecycle: {"activate": "waitlist-setup", "heal": "waitlist-heal"}
|
|
20
20
|
metadata: {"platform":{"optional":true}}
|
|
21
|
+
mcp:
|
|
22
|
+
command: node
|
|
23
|
+
args:
|
|
24
|
+
- ${PLATFORM_ROOT}/lib/mcp-spawn-tee/dist/index.js
|
|
25
|
+
- ${PLATFORM_ROOT}/plugins/waitlist/mcp/dist/index.js
|
|
26
|
+
env:
|
|
27
|
+
MCP_SPAWN_TEE_NAME: waitlist
|
|
28
|
+
LOG_DIR: ${LOG_DIR}
|
|
29
|
+
PLATFORM_ROOT: ${PLATFORM_ROOT}
|
|
30
|
+
ACCOUNT_ID: ${ACCOUNT_ID}
|
|
31
|
+
SESSION_ID: ${SESSION_ID}
|
|
21
32
|
---
|
|
22
33
|
|
|
23
34
|
# Waitlist
|
|
@@ -27,6 +27,17 @@ tools:
|
|
|
27
27
|
- name: whatsapp-group-info
|
|
28
28
|
publicAllowlist: false
|
|
29
29
|
metadata: {"platform":{"embed":["admin"]}}
|
|
30
|
+
mcp:
|
|
31
|
+
command: node
|
|
32
|
+
args:
|
|
33
|
+
- ${PLATFORM_ROOT}/lib/mcp-spawn-tee/dist/index.js
|
|
34
|
+
- ${PLATFORM_ROOT}/plugins/whatsapp/mcp/dist/index.js
|
|
35
|
+
env:
|
|
36
|
+
MCP_SPAWN_TEE_NAME: whatsapp
|
|
37
|
+
LOG_DIR: ${LOG_DIR}
|
|
38
|
+
PLATFORM_ROOT: ${PLATFORM_ROOT}
|
|
39
|
+
ACCOUNT_ID: ${ACCOUNT_ID}
|
|
40
|
+
SESSION_ID: ${SESSION_ID}
|
|
30
41
|
---
|
|
31
42
|
|
|
32
43
|
# WhatsApp
|
|
@@ -19,6 +19,17 @@ tools:
|
|
|
19
19
|
- name: workflow-runs
|
|
20
20
|
publicAllowlist: false
|
|
21
21
|
metadata: {"platform":{"always":false,"embed":[],"pluginKey":"workflows"}}
|
|
22
|
+
mcp:
|
|
23
|
+
command: node
|
|
24
|
+
args:
|
|
25
|
+
- ${PLATFORM_ROOT}/lib/mcp-spawn-tee/dist/index.js
|
|
26
|
+
- ${PLATFORM_ROOT}/plugins/workflows/mcp/dist/index.js
|
|
27
|
+
env:
|
|
28
|
+
MCP_SPAWN_TEE_NAME: workflows
|
|
29
|
+
LOG_DIR: ${LOG_DIR}
|
|
30
|
+
PLATFORM_ROOT: ${PLATFORM_ROOT}
|
|
31
|
+
ACCOUNT_ID: ${ACCOUNT_ID}
|
|
32
|
+
SESSION_ID: ${SESSION_ID}
|
|
22
33
|
---
|
|
23
34
|
|
|
24
35
|
# Workflows
|
|
@@ -125,6 +125,13 @@ fi
|
|
|
125
125
|
# and a PostToolUse regex matcher for parse tools.
|
|
126
126
|
# UserPromptSubmit — archive-ingest-surface-gate.sh clears the
|
|
127
127
|
# parse-error flag when the operator's next prompt arrives.
|
|
128
|
+
# Stop — turn-completed-graph-write.sh fires once per admin foreground
|
|
129
|
+
# turn and POSTs a hidden /spawn against the
|
|
130
|
+
# database-operator specialist with the transcript tail
|
|
131
|
+
# as stdin. The hook gates on MAXY_SESSION_ROLE=admin and
|
|
132
|
+
# MAXY_HIDDEN_SPAWN=0 so public PTYs and the hidden
|
|
133
|
+
# recorder PTY itself are no-ops. Per-turn graph writes
|
|
134
|
+
# happen there, not in the admin agent's reply path.
|
|
128
135
|
HOOKS_PATH="\$PLATFORM_ROOT/plugins/admin/hooks"
|
|
129
136
|
cat > "$ACCOUNT_SETTINGS" << SETTINGS_EOF
|
|
130
137
|
{
|
|
@@ -192,6 +199,13 @@ cat > "$ACCOUNT_SETTINGS" << SETTINGS_EOF
|
|
|
192
199
|
{ "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" }
|
|
193
200
|
]
|
|
194
201
|
}
|
|
202
|
+
],
|
|
203
|
+
"Stop": [
|
|
204
|
+
{
|
|
205
|
+
"hooks": [
|
|
206
|
+
{ "type": "command", "command": "bash $HOOKS_PATH/turn-completed-graph-write.sh" }
|
|
207
|
+
]
|
|
208
|
+
}
|
|
195
209
|
]
|
|
196
210
|
}
|
|
197
211
|
}
|
|
@@ -51,11 +51,13 @@ SPECIALISTS_DIR = os.path.join(REPO_ROOT, "platform", "templates", "specialists"
|
|
|
51
51
|
|
|
52
52
|
# Per-skill specialist ownership for plugins where the plugin itself is
|
|
53
53
|
# multi-purpose. The PLUGIN.md `specialist:` field handles single-owner
|
|
54
|
-
# plugins (linkedin-import →
|
|
55
|
-
#
|
|
54
|
+
# plugins (linkedin-import → librarian). Mixed-use plugins like `memory`
|
|
55
|
+
# declare per-skill ownership here.
|
|
56
56
|
EXPLICIT_OWNERSHIP = {
|
|
57
57
|
# plugin/skill -> specialist
|
|
58
|
-
"memory/document-ingest": "
|
|
58
|
+
"memory/document-ingest": "librarian",
|
|
59
|
+
"memory/conversation-archive": "librarian",
|
|
60
|
+
"memory/conversation-archive-enrich": "librarian",
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
# Skills that are explicitly admin-owned (loaded via plugin-read by the admin
|
|
@@ -12,11 +12,6 @@ export interface ManagerConfig {
|
|
|
12
12
|
claudeBin: string;
|
|
13
13
|
spawnCwd: string;
|
|
14
14
|
urlCaptureTimeoutMs: number;
|
|
15
|
-
/** upper bound on the spawn-time bridge-binding race. The
|
|
16
|
-
* spawn promise blocks until the jsonl-observer binds a JSONL to the
|
|
17
|
-
* captured URL's bridge suffix; on timeout the PTY is killed and the
|
|
18
|
-
* spawn returns 504. */
|
|
19
|
-
observeTimeoutMs: number;
|
|
20
15
|
killGraceMs: number;
|
|
21
16
|
jsonlReadMaxBytes: number;
|
|
22
17
|
host: HostResolution;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;4DAEwD;IACxD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;4DAEwD;IACxD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;;8BAO0B;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB;;;qDAGiD;IACjD,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAsJD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CA6D9E"}
|
|
@@ -4,7 +4,6 @@ import { dirname, join } from 'node:path';
|
|
|
4
4
|
import { DEFAULT_PUBLIC_SPAWN_LIMITS, } from './spawn-rate-limiter.js';
|
|
5
5
|
const DEFAULT_PORT = 19400;
|
|
6
6
|
const DEFAULT_URL_TIMEOUT_MS = 30_000;
|
|
7
|
-
const DEFAULT_OBSERVE_TIMEOUT_MS = 5_000;
|
|
8
7
|
const DEFAULT_KILL_GRACE_MS = 5_000;
|
|
9
8
|
const DEFAULT_JSONL_READ_MAX_BYTES = 1 * 1024 * 1024;
|
|
10
9
|
const DEFAULT_BRAND_PORT = 19200;
|
|
@@ -163,17 +162,28 @@ export function loadConfig(env = process.env) {
|
|
|
163
162
|
const lan = resolveLanIPv4();
|
|
164
163
|
const brandPort = resolveBrandPort(env);
|
|
165
164
|
const osHost = hostname();
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
165
|
+
// adminUrl prefers the observed LAN IPv4 (which always routes inside the
|
|
166
|
+
// device's network) over `<brand-hostname>.local`, because mDNS is a hint,
|
|
167
|
+
// not a guarantee. When lanIPv4 resolution failed (no non-loopback
|
|
168
|
+
// interface), fall back to the mDNS form so the agent still sees a URL
|
|
169
|
+
// it can present to the operator. Boot logs both the chosen form and
|
|
170
|
+
// the alternative for forensic review.
|
|
171
|
+
const adminUrl = lan.ip
|
|
172
|
+
? `http://${lan.ip}:${brandPort}`
|
|
173
|
+
: `http://${brand.fields.hostname}.local:${brandPort}`;
|
|
174
|
+
// tunnelUrl is no longer derived from brand.fields.domain at boot. The
|
|
175
|
+
// UI process holds Neo4j credentials and resolves the live tunnel state
|
|
176
|
+
// per-spawn, forwarding the result on the /spawn body. When the UI does
|
|
177
|
+
// not forward a value (resume from disk, public-chat with no overlap)
|
|
178
|
+
// the manager renders `tunnel-url: none` rather than fabricating an FQDN
|
|
179
|
+
// for a tunnel that may not exist.
|
|
180
|
+
const tunnelUrl = null;
|
|
170
181
|
return {
|
|
171
182
|
port,
|
|
172
183
|
persistDir,
|
|
173
184
|
claudeBin,
|
|
174
185
|
spawnCwd,
|
|
175
186
|
urlCaptureTimeoutMs: DEFAULT_URL_TIMEOUT_MS,
|
|
176
|
-
observeTimeoutMs: DEFAULT_OBSERVE_TIMEOUT_MS,
|
|
177
187
|
killGraceMs: DEFAULT_KILL_GRACE_MS,
|
|
178
188
|
jsonlReadMaxBytes: DEFAULT_JSONL_READ_MAX_BYTES,
|
|
179
189
|
host: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EACL,2BAA2B,GAG5B,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,7 @@ export interface HttpDeps extends Omit<SpawnDeps, 'store' | 'onJsonlObserved'> {
|
|
|
7
7
|
store: SessionStore;
|
|
8
8
|
killGraceMs: number;
|
|
9
9
|
jsonlReadMaxBytes: number;
|
|
10
|
-
/** gates `POST /spawn role=public` on per-(senderId, channel)
|
|
11
|
-
* and global token buckets. `admin` spawns bypass entirely. */
|
|
12
10
|
publicSpawnLimiter: RateLimiter;
|
|
13
|
-
/** attaches a JSONL tail watcher to each `role=public` session
|
|
14
|
-
* so tool_use→tool_result pairs emit `tool-call` log lines without an
|
|
15
|
-
* operator having to parse the transcript by hand. */
|
|
16
11
|
publicToolAudit: AuditRegistry;
|
|
17
12
|
}
|
|
18
13
|
export declare function buildHttpApp(deps: HttpDeps): Hono;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAA4E,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAK3H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAqC3D,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC5E,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;CAC/B;AAiED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAwiBjD"}
|