@monoes/monomindcli 1.14.6 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/reengineer-squad/boss.md +113 -0
- package/.claude/agents/reengineer-squad/critic-architect.md +132 -0
- package/.claude/agents/reengineer-squad/git-manager.md +145 -0
- package/.claude/agents/reengineer-squad/idea-generator.md +95 -0
- package/.claude/agents/reengineer-squad/implementer.md +112 -0
- package/.claude/agents/reengineer-squad/integration-planner.md +112 -0
- package/.claude/agents/reengineer-squad/source-analyst.md +103 -0
- package/.claude/agents/reengineer-squad/target-analyst.md +118 -0
- package/.claude/agents/reengineer-squad/tester.md +105 -0
- package/.claude/commands/mastermind/master.md +35 -14
- package/.claude/helpers/handlers/capture-handler.cjs +155 -18
- package/.claude/helpers/monolean-activate.cjs +20 -0
- package/.claude/helpers/monolean-config.cjs +76 -0
- package/.claude/helpers/monolean-instructions.cjs +109 -0
- package/.claude/helpers/monolean-propagate.cjs +9 -0
- package/.claude/helpers/monolean-tracker.cjs +18 -0
- package/.claude/helpers/skill-registry.json +2 -2
- package/.claude/skills/agent-browser-testing/SKILL.md +301 -18
- package/.claude/skills/mastermind/runorg.md +69 -23
- package/.claude/skills/monodesign/SKILL.md +32 -1
- package/.claude/skills/monodesign/adapt.md +53 -0
- package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +100 -0
- package/.claude/skills/monodesign/animate.md +65 -0
- package/.claude/skills/monodesign/audit.md +89 -0
- package/.claude/skills/monodesign/bolder.md +50 -0
- package/.claude/skills/monodesign/clarify.md +64 -0
- package/.claude/skills/monodesign/colorize.md +68 -0
- package/.claude/skills/monodesign/craft.md +51 -0
- package/.claude/skills/monodesign/critique.md +66 -0
- package/.claude/skills/monodesign/delight.md +47 -0
- package/.claude/skills/monodesign/distill.md +56 -0
- package/.claude/skills/monodesign/document.md +80 -0
- package/.claude/skills/monodesign/extract.md +74 -0
- package/.claude/skills/monodesign/harden.md +65 -0
- package/.claude/skills/monodesign/live.md +59 -0
- package/.claude/skills/monodesign/onboard.md +50 -0
- package/.claude/skills/monodesign/optimize.md +64 -0
- package/.claude/skills/monodesign/overdrive.md +56 -0
- package/.claude/skills/monodesign/polish.md +68 -0
- package/.claude/skills/monodesign/quieter.md +57 -0
- package/.claude/skills/monodesign/reference/antipatterns-catalog.md +248 -76
- package/.claude/skills/monodesign/reference/codex.md +107 -0
- package/.claude/skills/monodesign/reference/craft.md +3 -0
- package/.claude/skills/monodesign/reference/hooks.md +99 -0
- package/.claude/skills/monodesign/reference/image-prompts.md +12 -0
- package/.claude/skills/monodesign/shape.md +71 -0
- package/.claude/skills/monodesign/teach.md +69 -0
- package/.claude/skills/monodesign/typeset.md +59 -0
- package/.claude/skills/monolean/SKILL.md +118 -0
- package/.claude/skills/monolean-audit/SKILL.md +41 -0
- package/.claude/skills/monolean-debt/SKILL.md +46 -0
- package/.claude/skills/monolean-help/SKILL.md +60 -0
- package/.claude/skills/monolean-review/SKILL.md +57 -0
- package/bin/cli.js +3 -1
- package/dist/dashboard/server.js +137 -0
- package/dist/src/__tests__/browse-adapters.test.d.ts +2 -0
- package/dist/src/__tests__/browse-adapters.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-adapters.test.js +51 -0
- package/dist/src/__tests__/browse-adapters.test.js.map +1 -0
- package/dist/src/__tests__/browse-analyzer.test.d.ts +2 -0
- package/dist/src/__tests__/browse-analyzer.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-analyzer.test.js +68 -0
- package/dist/src/__tests__/browse-analyzer.test.js.map +1 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.d.ts +2 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.js +139 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.js.map +1 -0
- package/dist/src/__tests__/browse-cdp.test.d.ts +2 -0
- package/dist/src/__tests__/browse-cdp.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-cdp.test.js +169 -0
- package/dist/src/__tests__/browse-cdp.test.js.map +1 -0
- package/dist/src/__tests__/browse-dashboard.test.d.ts +2 -0
- package/dist/src/__tests__/browse-dashboard.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-dashboard.test.js +179 -0
- package/dist/src/__tests__/browse-dashboard.test.js.map +1 -0
- package/dist/src/__tests__/browse-engine.test.d.ts +2 -0
- package/dist/src/__tests__/browse-engine.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-engine.test.js +122 -0
- package/dist/src/__tests__/browse-engine.test.js.map +1 -0
- package/dist/src/__tests__/browse-expression.test.d.ts +2 -0
- package/dist/src/__tests__/browse-expression.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-expression.test.js +54 -0
- package/dist/src/__tests__/browse-expression.test.js.map +1 -0
- package/dist/src/__tests__/browse-store.test.d.ts +2 -0
- package/dist/src/__tests__/browse-store.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-store.test.js +99 -0
- package/dist/src/__tests__/browse-store.test.js.map +1 -0
- package/dist/src/__tests__/browse-workflow-types.test.d.ts +2 -0
- package/dist/src/__tests__/browse-workflow-types.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-workflow-types.test.js +33 -0
- package/dist/src/__tests__/browse-workflow-types.test.js.map +1 -0
- package/dist/src/browser/action-builder/analyzer.d.ts +11 -0
- package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -0
- package/dist/src/browser/action-builder/analyzer.js +71 -0
- package/dist/src/browser/action-builder/analyzer.js.map +1 -0
- package/dist/src/browser/action-builder/types.d.ts +47 -0
- package/dist/src/browser/action-builder/types.d.ts.map +1 -0
- package/dist/src/browser/action-builder/types.js +2 -0
- package/dist/src/browser/action-builder/types.js.map +1 -0
- package/dist/src/browser/adapters/gemini.d.ts +3 -0
- package/dist/src/browser/adapters/gemini.d.ts.map +1 -0
- package/dist/src/browser/adapters/gemini.js +16 -0
- package/dist/src/browser/adapters/gemini.js.map +1 -0
- package/dist/src/browser/adapters/google.d.ts +3 -0
- package/dist/src/browser/adapters/google.d.ts.map +1 -0
- package/dist/src/browser/adapters/google.js +17 -0
- package/dist/src/browser/adapters/google.js.map +1 -0
- package/dist/src/browser/adapters/index.d.ts +19 -0
- package/dist/src/browser/adapters/index.d.ts.map +1 -0
- package/dist/src/browser/adapters/index.js +23 -0
- package/dist/src/browser/adapters/index.js.map +1 -0
- package/dist/src/browser/adapters/instagram.d.ts +3 -0
- package/dist/src/browser/adapters/instagram.d.ts.map +1 -0
- package/dist/src/browser/adapters/instagram.js +17 -0
- package/dist/src/browser/adapters/instagram.js.map +1 -0
- package/dist/src/browser/adapters/linkedin.d.ts +3 -0
- package/dist/src/browser/adapters/linkedin.d.ts.map +1 -0
- package/dist/src/browser/adapters/linkedin.js +19 -0
- package/dist/src/browser/adapters/linkedin.js.map +1 -0
- package/dist/src/browser/adapters/microsoft.d.ts +3 -0
- package/dist/src/browser/adapters/microsoft.d.ts.map +1 -0
- package/dist/src/browser/adapters/microsoft.js +16 -0
- package/dist/src/browser/adapters/microsoft.js.map +1 -0
- package/dist/src/browser/adapters/x.d.ts +3 -0
- package/dist/src/browser/adapters/x.d.ts.map +1 -0
- package/dist/src/browser/adapters/x.js +19 -0
- package/dist/src/browser/adapters/x.js.map +1 -0
- package/dist/src/browser/dashboard/api-types.d.ts +50 -0
- package/dist/src/browser/dashboard/api-types.d.ts.map +1 -0
- package/dist/src/browser/dashboard/api-types.js +14 -0
- package/dist/src/browser/dashboard/api-types.js.map +1 -0
- package/dist/src/browser/dashboard/server.d.ts +9 -0
- package/dist/src/browser/dashboard/server.d.ts.map +1 -0
- package/dist/src/browser/dashboard/server.js +62 -0
- package/dist/src/browser/dashboard/server.js.map +1 -0
- package/dist/src/browser/dashboard/ui.html +1811 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts +3 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts.map +1 -0
- package/dist/src/browser/workflow/builtin-handlers.js +343 -0
- package/dist/src/browser/workflow/builtin-handlers.js.map +1 -0
- package/dist/src/browser/workflow/engine.d.ts +15 -0
- package/dist/src/browser/workflow/engine.d.ts.map +1 -0
- package/dist/src/browser/workflow/engine.js +127 -0
- package/dist/src/browser/workflow/engine.js.map +1 -0
- package/dist/src/browser/workflow/expression.d.ts +4 -0
- package/dist/src/browser/workflow/expression.d.ts.map +1 -0
- package/dist/src/browser/workflow/expression.js +64 -0
- package/dist/src/browser/workflow/expression.js.map +1 -0
- package/dist/src/browser/workflow/store.d.ts +24 -0
- package/dist/src/browser/workflow/store.d.ts.map +1 -0
- package/dist/src/browser/workflow/store.js +145 -0
- package/dist/src/browser/workflow/store.js.map +1 -0
- package/dist/src/browser/workflow/types.d.ts +48 -0
- package/dist/src/browser/workflow/types.d.ts.map +1 -0
- package/dist/src/browser/workflow/types.js +2 -0
- package/dist/src/browser/workflow/types.js.map +1 -0
- package/dist/src/commands/browse-action.d.ts +4 -0
- package/dist/src/commands/browse-action.d.ts.map +1 -0
- package/dist/src/commands/browse-action.js +151 -0
- package/dist/src/commands/browse-action.js.map +1 -0
- package/dist/src/commands/browse-platform.d.ts +4 -0
- package/dist/src/commands/browse-platform.d.ts.map +1 -0
- package/dist/src/commands/browse-platform.js +117 -0
- package/dist/src/commands/browse-platform.js.map +1 -0
- package/dist/src/commands/browse-workflow.d.ts +4 -0
- package/dist/src/commands/browse-workflow.d.ts.map +1 -0
- package/dist/src/commands/browse-workflow.js +153 -0
- package/dist/src/commands/browse-workflow.js.map +1 -0
- package/dist/src/commands/browse.d.ts +10 -6
- package/dist/src/commands/browse.d.ts.map +1 -1
- package/dist/src/commands/browse.js +11 -2154
- package/dist/src/commands/browse.js.map +1 -1
- package/dist/src/commands/design-detect.d.ts +21 -0
- package/dist/src/commands/design-detect.d.ts.map +1 -0
- package/dist/src/commands/design-detect.js +127 -0
- package/dist/src/commands/design-detect.js.map +1 -0
- package/dist/src/commands/design-palette.d.ts +22 -0
- package/dist/src/commands/design-palette.d.ts.map +1 -0
- package/dist/src/commands/design-palette.js +539 -0
- package/dist/src/commands/design-palette.js.map +1 -0
- package/dist/src/commands/hooks-core-commands.d.ts +10 -0
- package/dist/src/commands/hooks-core-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-core-commands.js +377 -0
- package/dist/src/commands/hooks-core-commands.js.map +1 -0
- package/dist/src/commands/hooks-coverage-commands.d.ts +12 -0
- package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-coverage-commands.js +1217 -0
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -0
- package/dist/src/commands/hooks-coverage-utils.d.ts +42 -0
- package/dist/src/commands/hooks-coverage-utils.d.ts.map +1 -0
- package/dist/src/commands/hooks-coverage-utils.js +220 -0
- package/dist/src/commands/hooks-coverage-utils.js.map +1 -0
- package/dist/src/commands/hooks-extended-commands.d.ts +14 -0
- package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-extended-commands.js +579 -0
- package/dist/src/commands/hooks-extended-commands.js.map +1 -0
- package/dist/src/commands/hooks-formatting.d.ts +13 -0
- package/dist/src/commands/hooks-formatting.d.ts.map +1 -0
- package/dist/src/commands/hooks-formatting.js +42 -0
- package/dist/src/commands/hooks-formatting.js.map +1 -0
- package/dist/src/commands/hooks-routing-commands.d.ts +15 -0
- package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-routing-commands.js +723 -0
- package/dist/src/commands/hooks-routing-commands.js.map +1 -0
- package/dist/src/commands/hooks-workers.d.ts +9 -0
- package/dist/src/commands/hooks-workers.d.ts.map +1 -0
- package/dist/src/commands/hooks-workers.js +782 -0
- package/dist/src/commands/hooks-workers.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +8 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +179 -4103
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +1 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +6 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +14 -15
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/commands/tokens.d.ts.map +1 -1
- package/dist/src/commands/tokens.js +77 -1
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +18 -8
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +39 -5
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +25 -5
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.d.ts +3 -5
- package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +619 -326
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-embedding.d.ts +161 -0
- package/dist/src/mcp-tools/hooks-embedding.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-embedding.js +506 -0
- package/dist/src/mcp-tools/hooks-embedding.js.map +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.d.ts +26 -0
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.js +1328 -0
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts +27 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.js +1591 -0
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts +3 -38
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +5 -3393
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +24 -14
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +54 -1
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/embedding-operations.d.ts +58 -0
- package/dist/src/memory/embedding-operations.d.ts.map +1 -0
- package/dist/src/memory/embedding-operations.js +299 -0
- package/dist/src/memory/embedding-operations.js.map +1 -0
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +37 -3
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +130 -0
- package/dist/src/memory/hnsw-operations.d.ts.map +1 -0
- package/dist/src/memory/hnsw-operations.js +400 -0
- package/dist/src/memory/hnsw-operations.js.map +1 -0
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +42 -23
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +52 -8
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.d.ts +67 -0
- package/dist/src/memory/memory-crud.d.ts.map +1 -0
- package/dist/src/memory/memory-crud.js +415 -0
- package/dist/src/memory/memory-crud.js.map +1 -0
- package/dist/src/memory/memory-initializer.d.ts +9 -322
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +17 -1794
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-migrations.d.ts +30 -0
- package/dist/src/memory/memory-migrations.d.ts.map +1 -0
- package/dist/src/memory/memory-migrations.js +134 -0
- package/dist/src/memory/memory-migrations.js.map +1 -0
- package/dist/src/memory/memory-read.d.ts +78 -0
- package/dist/src/memory/memory-read.d.ts.map +1 -0
- package/dist/src/memory/memory-read.js +331 -0
- package/dist/src/memory/memory-read.js.map +1 -0
- package/dist/src/memory/memory-schema.d.ts +13 -0
- package/dist/src/memory/memory-schema.d.ts.map +1 -0
- package/dist/src/memory/memory-schema.js +167 -0
- package/dist/src/memory/memory-schema.js.map +1 -0
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +37 -4
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/monovector/route-outcomes.d.ts.map +1 -1
- package/dist/src/monovector/route-outcomes.js +16 -6
- package/dist/src/monovector/route-outcomes.js.map +1 -1
- package/dist/src/pricing/model-pricing.d.ts +41 -0
- package/dist/src/pricing/model-pricing.d.ts.map +1 -0
- package/dist/src/pricing/model-pricing.js +61 -0
- package/dist/src/pricing/model-pricing.js.map +1 -0
- package/dist/src/ui/.monomind/capture/active-run.json +1 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.convs.jsonl +3 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.jsonl +11 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/rigid-qa-restart-1782288201.jsonl +540 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa-threads.jsonl +3 -0
- package/dist/src/ui/.monomind/orgs/test-event-fix/runs/rigid-qa-restart-1782288201.jsonl +2 -0
- package/dist/src/ui/MODULARIZATION_PLAN.md +79 -0
- package/dist/src/ui/collector.mjs +23 -13
- package/dist/src/ui/dashboard.html +1652 -13
- package/dist/src/ui/data/known-projects.json +1 -0
- package/dist/src/ui/data/mastermind-events.jsonl +553 -0
- package/dist/src/ui/data/sessions/_index.json +1 -0
- package/dist/src/ui/data/sessions/final-sess-001.jsonl +542 -0
- package/dist/src/ui/data/unknown-events.jsonl +1 -0
- package/dist/src/ui/orgs.html +154 -10
- package/dist/src/ui/server.mjs +1131 -168
- package/dist/src/ui/sse-manager.mjs +119 -0
- package/dist/src/update/checker.js +1 -1
- package/dist/src/update/checker.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/workflow/builtin-handlers.js +321 -0
- package/dist/workflow/engine.js +253 -0
- package/dist/workflow/expression.js +98 -0
- package/dist/workflow/types.js +2 -0
- package/package.json +8 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"ts":1782292615394,"type":"ping","body":"{\"type\":\"ping\",\"ts\":1}"}
|
package/dist/src/ui/orgs.html
CHANGED
|
@@ -152,6 +152,16 @@ html, body {
|
|
|
152
152
|
color: var(--green);
|
|
153
153
|
border: 1px solid oklch(68% 0.20 150 / 0.28);
|
|
154
154
|
}
|
|
155
|
+
.oi-badge.quiet {
|
|
156
|
+
background: oklch(75% 0.18 80 / 0.10);
|
|
157
|
+
color: oklch(75% 0.18 80);
|
|
158
|
+
border: 1px solid oklch(75% 0.18 80 / 0.30);
|
|
159
|
+
}
|
|
160
|
+
.oi-badge.stale {
|
|
161
|
+
background: oklch(60% 0.20 25 / 0.10);
|
|
162
|
+
color: oklch(65% 0.20 25);
|
|
163
|
+
border: 1px solid oklch(60% 0.20 25 / 0.30);
|
|
164
|
+
}
|
|
155
165
|
.oi-badge.idle {
|
|
156
166
|
background: transparent; color: var(--dim);
|
|
157
167
|
border: 1px solid var(--border);
|
|
@@ -210,6 +220,14 @@ html, body {
|
|
|
210
220
|
background: oklch(68% 0.20 150 / 0.12);
|
|
211
221
|
color: var(--green); border: 1px solid oklch(68% 0.20 150 / 0.25);
|
|
212
222
|
}
|
|
223
|
+
#org-status-badge.quiet {
|
|
224
|
+
background: oklch(75% 0.18 80 / 0.10);
|
|
225
|
+
color: oklch(75% 0.18 80); border: 1px solid oklch(75% 0.18 80 / 0.30);
|
|
226
|
+
}
|
|
227
|
+
#org-status-badge.stale {
|
|
228
|
+
background: oklch(60% 0.20 25 / 0.10);
|
|
229
|
+
color: oklch(65% 0.20 25); border: 1px solid oklch(60% 0.20 25 / 0.30);
|
|
230
|
+
}
|
|
213
231
|
#org-status-badge.idle {
|
|
214
232
|
background: transparent; color: var(--dim);
|
|
215
233
|
border: 1px solid var(--border);
|
|
@@ -427,6 +445,18 @@ html, body {
|
|
|
427
445
|
}
|
|
428
446
|
#chat-live-dot.on { background: var(--green); animation: livepulse 2.2s ease-in-out infinite; }
|
|
429
447
|
#chat-live-label { font-size: 8px; color: var(--dim); }
|
|
448
|
+
/* Phase 3: render mode toggle */
|
|
449
|
+
#chat-mode-bar {
|
|
450
|
+
display: flex; gap: 3px; margin-left: 8px;
|
|
451
|
+
}
|
|
452
|
+
.chat-mode-btn {
|
|
453
|
+
font-size: 7px; padding: 2px 7px; border-radius: 2px;
|
|
454
|
+
border: 1px solid var(--border); color: var(--dim);
|
|
455
|
+
background: transparent; cursor: pointer; font-family: var(--mono);
|
|
456
|
+
letter-spacing: 0.5px; text-transform: uppercase; transition: all 0.15s;
|
|
457
|
+
}
|
|
458
|
+
.chat-mode-btn:hover { border-color: var(--teal-dim); color: var(--muted); }
|
|
459
|
+
.chat-mode-btn.active { border-color: var(--teal); color: var(--teal); background: oklch(62% 0.20 186 / 0.07); }
|
|
430
460
|
|
|
431
461
|
#chat-feed-wrap {
|
|
432
462
|
flex: 1; overflow-y: auto; padding: 12px 20px;
|
|
@@ -870,6 +900,11 @@ html, body {
|
|
|
870
900
|
<select id="chat-sess-select" onchange="selectChatSession(this.value)">
|
|
871
901
|
<option value="">— select a session —</option>
|
|
872
902
|
</select>
|
|
903
|
+
<div id="chat-mode-bar">
|
|
904
|
+
<button class="chat-mode-btn active" id="mode-summary" onclick="setChatMode('summary')">SUMMARY</button>
|
|
905
|
+
<button class="chat-mode-btn" id="mode-detailed" onclick="setChatMode('detailed')">DETAILED</button>
|
|
906
|
+
<button class="chat-mode-btn" id="mode-raw" onclick="setChatMode('raw')">RAW</button>
|
|
907
|
+
</div>
|
|
873
908
|
<div id="chat-live-dot"></div>
|
|
874
909
|
<span id="chat-live-label">OFFLINE</span>
|
|
875
910
|
</div>
|
|
@@ -917,6 +952,30 @@ let allOrgs = [];
|
|
|
917
952
|
let selectedOrg = null;
|
|
918
953
|
let orgDetailData = null;
|
|
919
954
|
let currentTab = 'chart';
|
|
955
|
+
// Phase 3: Chat render mode (Summary / Detailed / Raw)
|
|
956
|
+
let chatRenderMode = localStorage.getItem('chatRenderMode') || 'summary';
|
|
957
|
+
|
|
958
|
+
// Phase 3: Chat render mode — Summary / Detailed / Raw
|
|
959
|
+
const CHAT_SUMMARY_TYPES = new Set(['session:start','session:complete','domain:dispatch','domain:complete','agent:spawn','agent:complete','agent:edit','org:comms','loop:start','loop:complete','org:artifact','agent:message','intercom']);
|
|
960
|
+
const CHAT_DETAILED_TYPES = new Set([...CHAT_SUMMARY_TYPES,'agent:bash','agent:bash:result','agent:browse','agent:read','agent:read:batch']);
|
|
961
|
+
function setChatMode(mode) {
|
|
962
|
+
chatRenderMode = mode;
|
|
963
|
+
localStorage.setItem('chatRenderMode', mode);
|
|
964
|
+
['summary','detailed','raw'].forEach(m => {
|
|
965
|
+
const btn = document.getElementById('mode-' + m);
|
|
966
|
+
if (btn) btn.className = 'chat-mode-btn' + (m === mode ? ' active' : '');
|
|
967
|
+
});
|
|
968
|
+
// Re-render chat feed with new mode
|
|
969
|
+
const currentSessId = document.getElementById('chat-sess-select')?.value;
|
|
970
|
+
if (currentSessId) selectChatSession(currentSessId);
|
|
971
|
+
}
|
|
972
|
+
// Apply saved mode on load
|
|
973
|
+
(function() {
|
|
974
|
+
['summary','detailed','raw'].forEach(m => {
|
|
975
|
+
const btn = document.getElementById('mode-' + m);
|
|
976
|
+
if (btn) btn.className = 'chat-mode-btn' + (m === chatRenderMode ? ' active' : '');
|
|
977
|
+
});
|
|
978
|
+
})();
|
|
920
979
|
|
|
921
980
|
// ── Utilities ──────────────────────────────────────────────────────
|
|
922
981
|
function esc(s) {
|
|
@@ -1017,7 +1076,7 @@ function renderSidebar() {
|
|
|
1017
1076
|
<div class="oi-header">
|
|
1018
1077
|
<div class="oi-dot ${org.running ? 'running' : ''}"></div>
|
|
1019
1078
|
<div class="oi-name">${esc(org.name)}</div>
|
|
1020
|
-
<span class="oi-badge ${org.running
|
|
1079
|
+
<span class="oi-badge ${(()=>{if(!org.running)return 'idle';if(!org.lastEventAt)return 'quiet';const a=Date.now()-org.lastEventAt;return a<1800000?'running':a<7200000?'quiet':'stale';})()} ">${(()=>{if(!org.running)return 'IDLE';if(!org.lastEventAt)return '🟡 QUIET';const a=Date.now()-org.lastEventAt;return a<1800000?'🟢 LIVE':a<7200000?'🟡 QUIET':'🔴 STALE';})()}</span>
|
|
1021
1080
|
<button class="oi-copy-btn" title="Copy org to another project">COPY</button>
|
|
1022
1081
|
<button class="oi-export-btn" title="Export org as JSON file">EXPORT</button>
|
|
1023
1082
|
<button class="oi-import-btn" title="Import org from JSON file">IMPORT</button>
|
|
@@ -1087,6 +1146,20 @@ async function selectOrg(name) {
|
|
|
1087
1146
|
}
|
|
1088
1147
|
|
|
1089
1148
|
updateHeader(listOrg, orgDetailData);
|
|
1149
|
+
|
|
1150
|
+
// Pre-populate LIVE EVENTS from historical run data (so panel isn't empty on select)
|
|
1151
|
+
if (listOrg.projectDir) {
|
|
1152
|
+
try {
|
|
1153
|
+
const runsR = await fetch(`/api/orgs/${encodeURIComponent(name)}/runs/current?dir=${encodeURIComponent(listOrg.projectDir)}`);
|
|
1154
|
+
if (runsR.ok) {
|
|
1155
|
+
const runsData = await runsR.json();
|
|
1156
|
+
if (runsData.events && runsData.events.length) {
|
|
1157
|
+
orgEventLog[name] = runsData.events.map(ev => ({ ...ev, _ts: ev.ts || Date.now() }));
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
} catch (_) {}
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1090
1163
|
renderTab(currentTab);
|
|
1091
1164
|
}
|
|
1092
1165
|
|
|
@@ -1096,8 +1169,21 @@ function updateHeader(listOrg, data) {
|
|
|
1096
1169
|
|
|
1097
1170
|
const running = listOrg.running;
|
|
1098
1171
|
const badge = document.getElementById('org-status-badge');
|
|
1099
|
-
|
|
1100
|
-
|
|
1172
|
+
// Phase 2: Three-state liveness — LIVE / QUIET / STALE / IDLE (Issue 6)
|
|
1173
|
+
let badgeState, badgeText;
|
|
1174
|
+
if (running) {
|
|
1175
|
+
if (!listOrg.lastEventAt) { badgeState = 'quiet'; badgeText = '🟡 QUIET'; }
|
|
1176
|
+
else {
|
|
1177
|
+
const _ageMs = Date.now() - listOrg.lastEventAt;
|
|
1178
|
+
if (_ageMs < 30 * 60 * 1000) { badgeState = 'running'; badgeText = '🟢 LIVE'; }
|
|
1179
|
+
else if (_ageMs < 2 * 60 * 60 * 1000) { badgeState = 'quiet'; badgeText = '🟡 QUIET'; }
|
|
1180
|
+
else { badgeState = 'stale'; badgeText = '🔴 STALE'; }
|
|
1181
|
+
}
|
|
1182
|
+
} else {
|
|
1183
|
+
badgeState = 'idle'; badgeText = 'IDLE';
|
|
1184
|
+
}
|
|
1185
|
+
badge.textContent = badgeText;
|
|
1186
|
+
badge.className = 'oi-badge ' + badgeState;
|
|
1101
1187
|
|
|
1102
1188
|
const rolesArr = data ? (data.roles || []) : [];
|
|
1103
1189
|
const rolesCount = Array.isArray(rolesArr) ? rolesArr.length : (listOrg.roles || 0);
|
|
@@ -1624,6 +1710,10 @@ window.selectChatAgent = function(name) {
|
|
|
1624
1710
|
|
|
1625
1711
|
function appendChatEvent(ev, animate) {
|
|
1626
1712
|
if (!chatAgentMatchesFilter(ev)) return;
|
|
1713
|
+
// Phase 3: Apply render mode filter
|
|
1714
|
+
if (chatRenderMode === 'summary' && !CHAT_SUMMARY_TYPES.has(ev.type)) return;
|
|
1715
|
+
if (chatRenderMode === 'detailed' && !CHAT_DETAILED_TYPES.has(ev.type)) return;
|
|
1716
|
+
// 'raw' mode: show everything
|
|
1627
1717
|
const feed = document.getElementById('chat-feed-wrap');
|
|
1628
1718
|
const empty = document.getElementById('chat-feed-empty');
|
|
1629
1719
|
if (!feed) return;
|
|
@@ -1644,7 +1734,16 @@ function appendChatEvent(ev, animate) {
|
|
|
1644
1734
|
el = mkSys(`<span style="color:${dc(ev.domain)}">✓ [${esc((ev.domain||'').toUpperCase())}]</span> ${esc(ev.status||'done')}${arts}`, ts);
|
|
1645
1735
|
} else if (ev.type === 'agent:spawn') {
|
|
1646
1736
|
const col = dc(ev.domain);
|
|
1647
|
-
|
|
1737
|
+
const name = ev.agentType || ev.from || ev.agent || 'agent';
|
|
1738
|
+
el = mkAgent(name, `spawned: ${esc(ev.task||'task')}`, ts, col, 'spawn');
|
|
1739
|
+
} else if (ev.type === 'agent:complete') {
|
|
1740
|
+
const name = ev.agentType || ev.role || ev.from || 'agent';
|
|
1741
|
+
const result = (ev.result || '').slice(0, 300);
|
|
1742
|
+
const cost = ev.cost_usd ? ` · $${parseFloat(ev.cost_usd).toFixed(4)}` : '';
|
|
1743
|
+
const tools = ev.toolCalls?.length ? ` · ${ev.toolCalls.slice(0,4).join(', ')}` : '';
|
|
1744
|
+
el = mkAgent(name, `${esc(result) || 'done'}${esc(tools)}${esc(cost)}`, ts, dc(ev.domain), 'complete');
|
|
1745
|
+
} else if (ev.type === 'org:comms') {
|
|
1746
|
+
el = mkIntercom(ev.from || 'boss', ev.to || 'agent', esc(ev.msg || ev.message || ''), ts);
|
|
1648
1747
|
} else if (ev.type === 'agent:message') {
|
|
1649
1748
|
el = mkAgent(ev.agent||'agent', esc(ev.text||''), ts, dc(ev.domain), null);
|
|
1650
1749
|
} else if (ev.type === 'intercom') {
|
|
@@ -1653,6 +1752,8 @@ function appendChatEvent(ev, animate) {
|
|
|
1653
1752
|
el = mkSys(`🔁 Loop: ${esc(ev.command||'')} (${ev.repeat||'?'} runs)`, ts);
|
|
1654
1753
|
} else if (ev.type === 'loop:complete') {
|
|
1655
1754
|
el = mkSys(`🔁 Loop done: ${esc(ev.command||'')} — ${ev.ranReps||'?'} run(s)`, ts);
|
|
1755
|
+
} else if (ev.type === 'org:artifact' && ev.artifact) {
|
|
1756
|
+
el = mkArtifact(ev.artifact, ts);
|
|
1656
1757
|
} else {
|
|
1657
1758
|
el = mkSys(`<span style="opacity:0.4">${esc(ev.type)}${ev.domain?' ['+esc(ev.domain)+']':''}</span>`, ts);
|
|
1658
1759
|
}
|
|
@@ -1681,6 +1782,49 @@ function mkIntercom(from, to, text, ts) {
|
|
|
1681
1782
|
el.innerHTML = `<div class="cmsg-meta"><span class="ctag sender">${esc(from||'?')}</span><span class="cic-arrow">→</span><span class="ctag receiver">${esc(to||'?')}</span><span class="cevtype">intercom</span><span class="cts">${ts}</span></div><div class="cbubble">${text}</div>`;
|
|
1682
1783
|
return el;
|
|
1683
1784
|
}
|
|
1785
|
+
function mkArtifact(art, ts) {
|
|
1786
|
+
const el = document.createElement('div');
|
|
1787
|
+
el.className = 'cmsg csys';
|
|
1788
|
+
const isText = (art.mimeType || '').startsWith('text/') || (art.mimeType || '') === 'application/json';
|
|
1789
|
+
const labelRaw = art.label || (art.path || 'artifact').split('/').pop();
|
|
1790
|
+
const meta = [art.mimeType, art.size ? `${Math.round(art.size/1024*10)/10} KB` : null, art.path ? art.path.split('/').slice(-2).join('/') : null].filter(Boolean).join(' · ');
|
|
1791
|
+
const viewBtn = isText && art.path
|
|
1792
|
+
? `<button onclick="viewArtifact(${JSON.stringify(art.path)},${JSON.stringify(labelRaw)})" style="background:#1a3a5a;color:#5d9fd9;border:1px solid #2980b944;border-radius:4px;padding:3px 9px;font-size:10px;font-weight:700;cursor:pointer;margin-left:auto">View</button>`
|
|
1793
|
+
: `<span style="font-size:10px;color:#555">Binary</span>`;
|
|
1794
|
+
el.innerHTML = `<div class="cbubble" style="padding:0"><div style="background:#1a1a2e;border:1px solid #3333aa44;border-radius:6px;padding:7px 10px;display:flex;align-items:center;gap:8px"><span style="font-size:16px">📄</span><div style="flex:1;min-width:0"><div style="font-size:12px;font-weight:700;color:#ccc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis">${esc(labelRaw)}</div><div style="font-size:10px;color:#888">${esc(meta)}</div></div>${viewBtn}</div><span style="color:var(--dim);font-size:9px;padding:4px 6px 2px">${ts}</span></div>`;
|
|
1795
|
+
return el;
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
async function viewArtifact(filePath, label) {
|
|
1799
|
+
const orgName = selectedOrg;
|
|
1800
|
+
if (!orgName || !filePath) return;
|
|
1801
|
+
const url = `/api/org/${encodeURIComponent(orgName)}/artifact?path=${encodeURIComponent(filePath)}`;
|
|
1802
|
+
try {
|
|
1803
|
+
const data = await fetch(url).then(r => r.json());
|
|
1804
|
+
if (data.binary) { console.warn('[orgs] Binary file — cannot display'); return; }
|
|
1805
|
+
if (data.error === 'file not found') { console.warn('[orgs] File no longer exists'); return; }
|
|
1806
|
+
if (data.error) { console.warn('[orgs] Artifact error:', data.error); return; }
|
|
1807
|
+
showArtifactPanel(label, data.content, data.mimeType);
|
|
1808
|
+
} catch(_) { console.warn('[orgs] Failed to load artifact', _); }
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
function showArtifactPanel(label, content, mimeType) {
|
|
1812
|
+
let panel = document.getElementById('artifact-panel');
|
|
1813
|
+
if (!panel) {
|
|
1814
|
+
panel = document.createElement('div');
|
|
1815
|
+
panel.id = 'artifact-panel';
|
|
1816
|
+
panel.style.cssText = 'position:fixed;top:0;right:0;width:480px;height:100vh;background:#0a0a14;border-left:1px solid #333;z-index:1000;display:flex;flex-direction:column;overflow:hidden';
|
|
1817
|
+
document.body.appendChild(panel);
|
|
1818
|
+
}
|
|
1819
|
+
panel.innerHTML = `
|
|
1820
|
+
<div style="padding:12px 14px;border-bottom:1px solid #1a1a2a;display:flex;align-items:center;gap:10px">
|
|
1821
|
+
<span style="font-size:13px;font-weight:700;color:#ccc;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">${esc(label)}</span>
|
|
1822
|
+
<button onclick="document.getElementById('artifact-panel').remove()" style="background:none;border:none;color:#888;font-size:16px;cursor:pointer">✕</button>
|
|
1823
|
+
</div>
|
|
1824
|
+
<pre style="flex:1;overflow:auto;padding:14px;font-size:11px;line-height:1.6;color:#bbb;white-space:pre-wrap;word-break:break-word">${esc(content)}</pre>
|
|
1825
|
+
`;
|
|
1826
|
+
panel.style.display = 'flex';
|
|
1827
|
+
}
|
|
1684
1828
|
|
|
1685
1829
|
function chatScrollFeed() {
|
|
1686
1830
|
const feed = document.getElementById('chat-feed-wrap');
|
|
@@ -1782,7 +1926,7 @@ function connectSSE() {
|
|
|
1782
1926
|
evtSource.onmessage = e => {
|
|
1783
1927
|
try {
|
|
1784
1928
|
const ev = JSON.parse(e.data);
|
|
1785
|
-
if (ev && typeof ev.org === 'string' && ev.type && ev.type.startsWith('org:')) {
|
|
1929
|
+
if (ev && typeof ev.org === 'string' && ev.type && (ev.type.startsWith('org:') || ev.type.startsWith('agent:'))) {
|
|
1786
1930
|
const name = ev.org;
|
|
1787
1931
|
if (!orgEventLog[name]) orgEventLog[name] = [];
|
|
1788
1932
|
orgEventLog[name].push({ ...ev, _ts: Date.now() });
|
|
@@ -1874,7 +2018,7 @@ function appendLiveFeedRow(ev, isNew) {
|
|
|
1874
2018
|
if (!rows) return;
|
|
1875
2019
|
const time = new Date().toLocaleTimeString('en', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' });
|
|
1876
2020
|
const type = (ev.type || '').replace('org:', '');
|
|
1877
|
-
const msg = ev.message || ev.msg || ev.agent || ev.role || ev.status || '';
|
|
2021
|
+
const msg = ev.message || ev.msg || ev.task?.slice(0,60) || (ev.result||'').slice(0,60) || ev.agentType || ev.agent || ev.role || ev.status || '';
|
|
1878
2022
|
const row = document.createElement('div');
|
|
1879
2023
|
row.className = 'clf-row' + (isNew ? ' new' : '');
|
|
1880
2024
|
row.title = msg;
|
|
@@ -2013,7 +2157,7 @@ window.exportOrg = async function(name) {
|
|
|
2013
2157
|
a.click();
|
|
2014
2158
|
setTimeout(() => URL.revokeObjectURL(a.href), 5000);
|
|
2015
2159
|
} catch(e) {
|
|
2016
|
-
|
|
2160
|
+
console.warn('[orgs] Export failed:', e.message);
|
|
2017
2161
|
}
|
|
2018
2162
|
};
|
|
2019
2163
|
|
|
@@ -2042,7 +2186,7 @@ async function handleImportFile(e) {
|
|
|
2042
2186
|
try {
|
|
2043
2187
|
const text = await file.text();
|
|
2044
2188
|
let data;
|
|
2045
|
-
try { data = JSON.parse(text); } catch(_) {
|
|
2189
|
+
try { data = JSON.parse(text); } catch(_) { console.warn('[orgs] Import failed: invalid JSON'); return; }
|
|
2046
2190
|
const r = await fetch(`/api/orgs/${encodeURIComponent(importTargetOrg)}/import`, {
|
|
2047
2191
|
method: 'POST',
|
|
2048
2192
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -2052,10 +2196,10 @@ async function handleImportFile(e) {
|
|
|
2052
2196
|
if (r.ok && result.ok) {
|
|
2053
2197
|
loadOrgs();
|
|
2054
2198
|
} else {
|
|
2055
|
-
|
|
2199
|
+
console.warn('[orgs] Import failed:', result.error || r.statusText);
|
|
2056
2200
|
}
|
|
2057
2201
|
} catch(e) {
|
|
2058
|
-
|
|
2202
|
+
console.warn('[orgs] Import failed:', e.message);
|
|
2059
2203
|
} finally {
|
|
2060
2204
|
importTargetOrg = null;
|
|
2061
2205
|
}
|