@theihtisham/agent-shadow-brain 7.1.0 → 7.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/README.md +125 -450
- package/dist/activity-cli.d.ts +3 -0
- package/dist/activity-cli.d.ts.map +1 -0
- package/dist/activity-cli.js +78 -0
- package/dist/activity-cli.js.map +1 -0
- package/dist/adapters/index.d.ts +2 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +3 -2
- package/dist/adapters/index.js.map +1 -1
- package/dist/brain/activity-journal.d.ts +82 -0
- package/dist/brain/activity-journal.d.ts.map +1 -0
- package/dist/brain/activity-journal.js +315 -0
- package/dist/brain/activity-journal.js.map +1 -0
- package/dist/brain/activity-reporting.d.ts +14 -0
- package/dist/brain/activity-reporting.d.ts.map +1 -0
- package/dist/brain/activity-reporting.js +17 -0
- package/dist/brain/activity-reporting.js.map +1 -0
- package/dist/brain/auto-update.js +1 -1
- package/dist/brain/brain-portability.js +1 -1
- package/dist/brain/client-config.d.ts +19 -0
- package/dist/brain/client-config.d.ts.map +1 -0
- package/dist/brain/client-config.js +40 -0
- package/dist/brain/client-config.js.map +1 -0
- package/dist/brain/client-integrations.d.ts +63 -0
- package/dist/brain/client-integrations.d.ts.map +1 -0
- package/dist/brain/client-integrations.js +79 -0
- package/dist/brain/client-integrations.js.map +1 -0
- package/dist/brain/context-assembly.d.ts +84 -0
- package/dist/brain/context-assembly.d.ts.map +1 -0
- package/dist/brain/context-assembly.js +529 -0
- package/dist/brain/context-assembly.js.map +1 -0
- package/dist/brain/context-request.d.ts +4 -0
- package/dist/brain/context-request.d.ts.map +1 -0
- package/dist/brain/context-request.js +22 -0
- package/dist/brain/context-request.js.map +1 -0
- package/dist/brain/context-retrieval.d.ts +88 -0
- package/dist/brain/context-retrieval.d.ts.map +1 -0
- package/dist/brain/context-retrieval.js +300 -0
- package/dist/brain/context-retrieval.js.map +1 -0
- package/dist/brain/feature-settings.d.ts +58 -0
- package/dist/brain/feature-settings.d.ts.map +1 -0
- package/dist/brain/feature-settings.js +242 -0
- package/dist/brain/feature-settings.js.map +1 -0
- package/dist/brain/file-identity.d.ts +4 -0
- package/dist/brain/file-identity.d.ts.map +1 -0
- package/dist/brain/file-identity.js +27 -0
- package/dist/brain/file-identity.js.map +1 -0
- package/dist/brain/global-brain.d.ts +18 -1
- package/dist/brain/global-brain.d.ts.map +1 -1
- package/dist/brain/global-brain.js +77 -10
- package/dist/brain/global-brain.js.map +1 -1
- package/dist/brain/mcp-server.d.ts +30 -1
- package/dist/brain/mcp-server.d.ts.map +1 -1
- package/dist/brain/mcp-server.js +378 -28
- package/dist/brain/mcp-server.js.map +1 -1
- package/dist/brain/mcp-stdio.d.ts +12 -0
- package/dist/brain/mcp-stdio.d.ts.map +1 -0
- package/dist/brain/mcp-stdio.js +140 -0
- package/dist/brain/mcp-stdio.js.map +1 -0
- package/dist/brain/memory-annotations.d.ts +97 -0
- package/dist/brain/memory-annotations.d.ts.map +1 -0
- package/dist/brain/memory-annotations.js +389 -0
- package/dist/brain/memory-annotations.js.map +1 -0
- package/dist/brain/memory-graph.d.ts.map +1 -1
- package/dist/brain/memory-graph.js +12 -23
- package/dist/brain/memory-graph.js.map +1 -1
- package/dist/brain/memory-inspection.d.ts +72 -0
- package/dist/brain/memory-inspection.d.ts.map +1 -0
- package/dist/brain/memory-inspection.js +131 -0
- package/dist/brain/memory-inspection.js.map +1 -0
- package/dist/brain/memory-mcp-content.d.ts +44 -0
- package/dist/brain/memory-mcp-content.d.ts.map +1 -0
- package/dist/brain/memory-mcp-content.js +91 -0
- package/dist/brain/memory-mcp-content.js.map +1 -0
- package/dist/brain/memory-sources.d.ts +8 -0
- package/dist/brain/memory-sources.d.ts.map +1 -0
- package/dist/brain/memory-sources.js +27 -0
- package/dist/brain/memory-sources.js.map +1 -0
- package/dist/brain/orchestrator.js +1 -1
- package/dist/brain/project-feedback.d.ts +63 -0
- package/dist/brain/project-feedback.d.ts.map +1 -0
- package/dist/brain/project-feedback.js +289 -0
- package/dist/brain/project-feedback.js.map +1 -0
- package/dist/brain/project-hub-contract.d.ts +326 -0
- package/dist/brain/project-hub-contract.d.ts.map +1 -0
- package/dist/brain/project-hub-contract.js +56 -0
- package/dist/brain/project-hub-contract.js.map +1 -0
- package/dist/brain/project-hub-mcp.d.ts +168 -0
- package/dist/brain/project-hub-mcp.d.ts.map +1 -0
- package/dist/brain/project-hub-mcp.js +41 -0
- package/dist/brain/project-hub-mcp.js.map +1 -0
- package/dist/brain/project-hub-pdf-worker.d.ts +13 -0
- package/dist/brain/project-hub-pdf-worker.d.ts.map +1 -0
- package/dist/brain/project-hub-pdf-worker.js +84 -0
- package/dist/brain/project-hub-pdf-worker.js.map +1 -0
- package/dist/brain/project-hub-store.d.ts +38 -0
- package/dist/brain/project-hub-store.d.ts.map +1 -0
- package/dist/brain/project-hub-store.js +189 -0
- package/dist/brain/project-hub-store.js.map +1 -0
- package/dist/brain/project-hub.d.ts +127 -0
- package/dist/brain/project-hub.d.ts.map +1 -0
- package/dist/brain/project-hub.js +381 -0
- package/dist/brain/project-hub.js.map +1 -0
- package/dist/brain/project-kit-inspection.d.ts +28 -0
- package/dist/brain/project-kit-inspection.d.ts.map +1 -0
- package/dist/brain/project-kit-inspection.js +200 -0
- package/dist/brain/project-kit-inspection.js.map +1 -0
- package/dist/brain/project-kit-paths.d.ts +13 -0
- package/dist/brain/project-kit-paths.d.ts.map +1 -0
- package/dist/brain/project-kit-paths.js +141 -0
- package/dist/brain/project-kit-paths.js.map +1 -0
- package/dist/brain/project-kit.d.ts +41 -0
- package/dist/brain/project-kit.d.ts.map +1 -0
- package/dist/brain/project-kit.js +255 -0
- package/dist/brain/project-kit.js.map +1 -0
- package/dist/brain/project-memory.d.ts +38 -0
- package/dist/brain/project-memory.d.ts.map +1 -0
- package/dist/brain/project-memory.js +76 -0
- package/dist/brain/project-memory.js.map +1 -0
- package/dist/brain/subconscious.d.ts +21 -24
- package/dist/brain/subconscious.d.ts.map +1 -1
- package/dist/brain/subconscious.js +82 -218
- package/dist/brain/subconscious.js.map +1 -1
- package/dist/brain/workflow-skills.d.ts +5 -5
- package/dist/brain/workflow-skills.d.ts.map +1 -1
- package/dist/brain/workflow-skills.js +3 -2
- package/dist/brain/workflow-skills.js.map +1 -1
- package/dist/cli.js +40 -4
- package/dist/cli.js.map +1 -1
- package/dist/context-cli.d.ts +3 -0
- package/dist/context-cli.d.ts.map +1 -0
- package/dist/context-cli.js +90 -0
- package/dist/context-cli.js.map +1 -0
- package/dist/curation-cli.d.ts +4 -0
- package/dist/curation-cli.d.ts.map +1 -0
- package/dist/curation-cli.js +118 -0
- package/dist/curation-cli.js.map +1 -0
- package/dist/dashboard/brain-hub-actions.d.ts +2 -0
- package/dist/dashboard/brain-hub-actions.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-actions.js +137 -0
- package/dist/dashboard/brain-hub-actions.js.map +1 -0
- package/dist/dashboard/brain-hub-client.d.ts +2 -0
- package/dist/dashboard/brain-hub-client.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-client.js +335 -0
- package/dist/dashboard/brain-hub-client.js.map +1 -0
- package/dist/dashboard/brain-hub-graph.d.ts +2 -0
- package/dist/dashboard/brain-hub-graph.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-graph.js +176 -0
- package/dist/dashboard/brain-hub-graph.js.map +1 -0
- package/dist/dashboard/brain-hub-html.d.ts +2 -0
- package/dist/dashboard/brain-hub-html.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-html.js +30 -0
- package/dist/dashboard/brain-hub-html.js.map +1 -0
- package/dist/dashboard/brain-hub-project-views.d.ts +2 -0
- package/dist/dashboard/brain-hub-project-views.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-project-views.js +79 -0
- package/dist/dashboard/brain-hub-project-views.js.map +1 -0
- package/dist/dashboard/brain-hub-views.d.ts +2 -0
- package/dist/dashboard/brain-hub-views.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-views.js +150 -0
- package/dist/dashboard/brain-hub-views.js.map +1 -0
- package/dist/dashboard/demo-workspace.d.ts +11 -0
- package/dist/dashboard/demo-workspace.d.ts.map +1 -0
- package/dist/dashboard/demo-workspace.js +178 -0
- package/dist/dashboard/demo-workspace.js.map +1 -0
- package/dist/dashboard/live-workspace-html.d.ts +2 -0
- package/dist/dashboard/live-workspace-html.d.ts.map +1 -0
- package/dist/dashboard/live-workspace-html.js +1042 -0
- package/dist/dashboard/live-workspace-html.js.map +1 -0
- package/dist/dashboard/project-feedback-html.d.ts +5 -0
- package/dist/dashboard/project-feedback-html.d.ts.map +1 -0
- package/dist/dashboard/project-feedback-html.js +216 -0
- package/dist/dashboard/project-feedback-html.js.map +1 -0
- package/dist/dashboard/project-hub-api.d.ts +5 -0
- package/dist/dashboard/project-hub-api.d.ts.map +1 -0
- package/dist/dashboard/project-hub-api.js +121 -0
- package/dist/dashboard/project-hub-api.js.map +1 -0
- package/dist/dashboard/project-kit-html.d.ts +4 -0
- package/dist/dashboard/project-kit-html.d.ts.map +1 -0
- package/dist/dashboard/project-kit-html.js +359 -0
- package/dist/dashboard/project-kit-html.js.map +1 -0
- package/dist/dashboard/project-workspace.d.ts +16 -0
- package/dist/dashboard/project-workspace.d.ts.map +1 -0
- package/dist/dashboard/project-workspace.js +106 -0
- package/dist/dashboard/project-workspace.js.map +1 -0
- package/dist/dashboard/server.d.ts +2 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +65 -19
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
- package/dist/dashboard/v6-dashboard-html.js +34 -56
- package/dist/dashboard/v6-dashboard-html.js.map +1 -1
- package/dist/dashboard/workspace-api.d.ts +22 -0
- package/dist/dashboard/workspace-api.d.ts.map +1 -0
- package/dist/dashboard/workspace-api.js +429 -0
- package/dist/dashboard/workspace-api.js.map +1 -0
- package/dist/dashboard/workspace-html.d.ts +2 -0
- package/dist/dashboard/workspace-html.d.ts.map +1 -0
- package/dist/dashboard/workspace-html.js +2538 -0
- package/dist/dashboard/workspace-html.js.map +1 -0
- package/dist/dashboard/workspace-status.d.ts +50 -0
- package/dist/dashboard/workspace-status.d.ts.map +1 -0
- package/dist/dashboard/workspace-status.js +22 -0
- package/dist/dashboard/workspace-status.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/integration-cli.d.ts +3 -0
- package/dist/integration-cli.d.ts.map +1 -0
- package/dist/integration-cli.js +16 -0
- package/dist/integration-cli.js.map +1 -0
- package/dist/project-cli.d.ts +3 -0
- package/dist/project-cli.d.ts.map +1 -0
- package/dist/project-cli.js +100 -0
- package/dist/project-cli.js.map +1 -0
- package/dist/types.d.ts +12 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/COMPARISON.md +22 -0
- package/docs/COMPONENTS.md +66 -0
- package/docs/CONTEXT_LAB.md +79 -0
- package/docs/FEATURES_AND_LIMITS.md +24 -0
- package/docs/INTEGRATIONS.md +68 -0
- package/docs/LEARNING.md +46 -0
- package/docs/PROJECT_KIT.md +93 -0
- package/docs/QUICKSTART.md +44 -0
- package/docs/README.md +33 -0
- package/docs/ROADMAP-v7.md +147 -0
- package/docs/SHARING.md +13 -0
- package/docs/SHOWCASE.md +87 -0
- package/docs/STATS.md +21 -0
- package/docs/TROUBLESHOOTING.md +42 -0
- package/docs/UPGRADE_PLAN_v7.0.0.md +203 -0
- package/docs/VIRAL-PLAYBOOK.md +259 -0
- package/docs/VISUAL_GUIDE_v7.1.4.md +70 -0
- package/docs/WORKFLOW_INTEGRATION.md +19 -1
- package/docs/WORKSPACE.md +37 -0
- package/docs/assets/7.1.4-collaboration-design-preview.png +0 -0
- package/docs/assets/7.1.4-comparison.png +0 -0
- package/docs/assets/7.1.4-context-lab.png +0 -0
- package/docs/assets/7.1.4-control-room-dense-preview.png +0 -0
- package/docs/assets/7.1.4-control-room-focus-preview.png +0 -0
- package/docs/assets/7.1.4-features.png +0 -0
- package/docs/assets/7.1.4-graph.png +0 -0
- package/docs/assets/7.1.4-hub-control-room.png +0 -0
- package/docs/assets/7.1.4-hub-empty.png +0 -0
- package/docs/assets/7.1.4-hub-knowledge.png +0 -0
- package/docs/assets/7.1.4-hub-learning.png +0 -0
- package/docs/assets/7.1.4-hub-mobile.png +0 -0
- package/docs/assets/7.1.4-hub-public-docs-source.png +0 -0
- package/docs/assets/7.1.4-hub-public-docs.gif +0 -0
- package/docs/assets/7.1.4-hub-public-docs.png +0 -0
- package/docs/assets/7.1.4-hub-setup.png +0 -0
- package/docs/assets/7.1.4-hub-walkthrough.gif +0 -0
- package/docs/assets/7.1.4-integrations.png +0 -0
- package/docs/assets/7.1.4-knowledge-design-preview.png +0 -0
- package/docs/assets/7.1.4-learning-design-preview.png +0 -0
- package/docs/assets/7.1.4-learning.png +0 -0
- package/docs/assets/7.1.4-live.png +0 -0
- package/docs/assets/7.1.4-memory-review.png +0 -0
- package/docs/assets/7.1.4-mobile.png +0 -0
- package/docs/assets/7.1.4-models-design-preview.png +0 -0
- package/docs/assets/7.1.4-outcome-ranking.png +0 -0
- package/docs/assets/7.1.4-overview.png +0 -0
- package/docs/assets/7.1.4-project-kit.png +0 -0
- package/docs/assets/7.1.4-project-skill-preview.png +0 -0
- package/docs/assets/7.1.4-replay.png +0 -0
- package/docs/assets/7.1.4-setup-design-preview.png +0 -0
- package/docs/assets/7.1.4-usage-design-preview.png +0 -0
- package/docs/assets/context-flow-v7.2.png +0 -0
- package/docs/assets/context-v7.1.3.png +0 -0
- package/docs/assets/features-v7.1.3.png +0 -0
- package/docs/assets/graph-v7.1.3.png +0 -0
- package/docs/assets/integrations-v7.1.3.png +0 -0
- package/docs/assets/live-v7.1.3.png +0 -0
- package/docs/assets/live-v7.1.4.gif +0 -0
- package/docs/assets/memory-detail-v7.1.3.png +0 -0
- package/docs/assets/overview-v7.1.3.png +0 -0
- package/docs/assets/workspace-graph-v7.2.png +0 -0
- package/docs/assets/workspace-overview-v7.2.png +0 -0
- package/docs/evaluation/CONTEXT_EVALUATION_v7.1.4.json +1818 -0
- package/docs/evaluation/CONTEXT_EVALUATION_v7.1.4.md +36 -0
- package/docs/launch/COMPONENT_MAP_v7.1.4.md +307 -0
- package/docs/launch/PROJECT_KIT_PLAN_v7.1.4.md +110 -0
- package/docs/launch/PROJECT_LEARNING_PLAN_v7.1.4.md +63 -0
- package/docs/launch/RELEASE_NOTES_v7.1.3.md +40 -0
- package/docs/launch/RELEASE_NOTES_v7.1.4.md +30 -0
- package/docs/launch/RELEASE_NOTES_v7.2.0.md +24 -0
- package/docs/launch/RESEARCH_AND_PLAN_v7.1.4.md +255 -0
- package/package.json +43 -126
- package/skills/shadow-research/SKILL.md +2 -0
- package/skills/shadow-workflow/SKILL.md +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-workspace-html.js","sourceRoot":"","sources":["../../src/dashboard/live-workspace-html.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+gCrC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Project-local task outcomes share the workspace memory browser and API helpers. */
|
|
2
|
+
export declare const PROJECT_FEEDBACK_STYLE: string;
|
|
3
|
+
export declare const PROJECT_FEEDBACK_MARKUP: string;
|
|
4
|
+
export declare const PROJECT_FEEDBACK_SCRIPT: string;
|
|
5
|
+
//# sourceMappingURL=project-feedback-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-feedback-html.d.ts","sourceRoot":"","sources":["../../src/dashboard/project-feedback-html.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,QAkBlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QA6BnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAoKnC,CAAC"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/** Project-local task outcomes share the workspace memory browser and API helpers. */
|
|
2
|
+
export const PROJECT_FEEDBACK_STYLE = String.raw `
|
|
3
|
+
.kit-outcomes { scroll-margin-top: 56px; }
|
|
4
|
+
.outcomes-layout { display: grid; grid-template-columns: minmax(280px,.9fr) minmax(0,1.1fr); align-items: start; }
|
|
5
|
+
.outcome-editor { display: grid; gap: 10px; }
|
|
6
|
+
.outcome-history { border-left: 1px solid var(--line); min-width: 0; }
|
|
7
|
+
.outcome-history .panel-head { background: var(--inset); }
|
|
8
|
+
.outcome-list { max-height: 560px; overflow: auto; }
|
|
9
|
+
.outcome-row { display: grid; gap: 7px; padding: 11px 15px; }
|
|
10
|
+
.outcome-row h4 { margin: 0; font-size: .93rem; overflow-wrap: anywhere; }
|
|
11
|
+
.outcome-row .button { min-height: 32px; }
|
|
12
|
+
.outcome-search { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 6px; }
|
|
13
|
+
.outcome-reason { white-space: pre-wrap; }
|
|
14
|
+
.kit-identity .kit-outcomes-jump { margin-top: 8px; color: var(--signal); }
|
|
15
|
+
.kit-identity .kit-outcomes-jump:hover { background: #254350; }
|
|
16
|
+
@media (max-width: 985px) {
|
|
17
|
+
.outcomes-layout { grid-template-columns: minmax(0,1fr); }
|
|
18
|
+
.outcome-history { border-left: 0; border-top: 1px solid var(--line); }
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
export const PROJECT_FEEDBACK_MARKUP = String.raw `
|
|
22
|
+
<section class="panel kit-outcomes" aria-labelledby="kit-outcomes-heading" id="kit-outcomes">
|
|
23
|
+
<div class="panel-head">
|
|
24
|
+
<div><h2 id="kit-outcomes-heading" tabindex="-1">Memory outcomes</h2><p class="small muted" id="kit-outcomes-policy">Adaptive retrieval can use reported outcomes when a future task matches.</p></div>
|
|
25
|
+
<button class="button switch" type="button" role="switch" id="kit-feedback-enable" aria-checked="false" aria-label="Use task outcomes in Adaptive retrieval" aria-describedby="kit-outcomes-policy" disabled><span id="kit-feedback-enabled-label" aria-hidden="true">Loading</span><span class="switch-track" aria-hidden="true"></span></button>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="outcomes-layout">
|
|
28
|
+
<div class="panel-body outcome-editor">
|
|
29
|
+
<form id="kit-outcome-search-form" class="outcome-search" role="search" aria-label="Find a memory to rate">
|
|
30
|
+
<label class="label" for="kit-outcome-query">Find project memory<input type="search" maxlength="500" id="kit-outcome-query" placeholder="Search by title or keyword"></label>
|
|
31
|
+
<button class="button" id="kit-outcome-search" type="submit"><span data-icon="search"></span>Find</button>
|
|
32
|
+
</form>
|
|
33
|
+
<p class="small muted" id="kit-outcome-memory-status" role="status"></p>
|
|
34
|
+
<form id="kit-outcome-form" class="kit-form">
|
|
35
|
+
<label class="label" for="kit-outcome-memory">Memory<select id="kit-outcome-memory" required><option value="">Choose a memory</option></select></label>
|
|
36
|
+
<label class="label" for="kit-outcome-task">Task<textarea id="kit-outcome-task" rows="2" maxlength="1000" required placeholder="What were you working on?"></textarea></label>
|
|
37
|
+
<label class="label" for="kit-outcome-rating">Outcome<select id="kit-outcome-rating" required><option value="">Choose an outcome</option><option value="useful">Useful</option><option value="not-useful">Not useful</option><option value="incorrect">Incorrect</option></select></label>
|
|
38
|
+
<label class="label" for="kit-outcome-reason">Reason<textarea id="kit-outcome-reason" rows="3" maxlength="600" required placeholder="How did this memory affect the task?"></textarea></label>
|
|
39
|
+
<label class="label" for="kit-outcome-evidence">Recorded references <span class="small muted">Optional. Up to 3, one per line.</span><textarea id="kit-outcome-evidence" rows="2" maxlength="542" placeholder="tests/checkout-retry.test.ts"></textarea></label>
|
|
40
|
+
<button class="button primary" id="kit-outcome-save" type="submit" disabled>Save reported outcome</button>
|
|
41
|
+
<div id="kit-outcome-status" class="kit-form-status" role="status"></div>
|
|
42
|
+
</form>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="outcome-history">
|
|
45
|
+
<div class="panel-head"><h3>Reported outcomes</h3><span class="small muted" id="kit-outcome-count"></span></div>
|
|
46
|
+
<div id="kit-outcome-records" aria-busy="true"></div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</section>
|
|
50
|
+
`;
|
|
51
|
+
export const PROJECT_FEEDBACK_SCRIPT = String.raw `
|
|
52
|
+
const outcomes = { snapshot: null, saving: false, loading: false, memories: [], memoryRequest: 0, project: '' };
|
|
53
|
+
const outcomeRatings = { useful: ['ok', 'Useful'], 'not-useful': ['warn', 'Not useful'], incorrect: ['error', 'Incorrect'] };
|
|
54
|
+
|
|
55
|
+
function syncOutcomeControls() {
|
|
56
|
+
const current = outcomes.snapshot;
|
|
57
|
+
const toggle = $('kit-feedback-enable');
|
|
58
|
+
toggle.disabled = !current || outcomes.saving;
|
|
59
|
+
toggle.setAttribute('aria-checked', String(current?.enabled === true));
|
|
60
|
+
$('kit-feedback-enabled-label').textContent = !current ? 'Unavailable' : current.enabled ? 'On' : 'Off';
|
|
61
|
+
$('kit-outcome-save').disabled = !current || outcomes.saving || !$('kit-outcome-memory').value;
|
|
62
|
+
$('kit-outcomes-policy').textContent = current?.enabled === false ?
|
|
63
|
+
'Learning is off. Reports remain available for review.' : 'Adaptive retrieval can use reported outcomes when a future task matches.';
|
|
64
|
+
$('kit-outcome-records').querySelectorAll('[data-outcome-remove]').forEach((button) => { button.disabled = outcomes.saving || !current; });
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function renderOutcomeHistory() {
|
|
68
|
+
const current = outcomes.snapshot;
|
|
69
|
+
const target = $('kit-outcome-records');
|
|
70
|
+
if (!current) return;
|
|
71
|
+
const records = [...list(current.records)].sort((a, b) => Date.parse(b.updatedAt) - Date.parse(a.updatedAt));
|
|
72
|
+
$('kit-outcome-count').textContent = countLabel(records.length, 'report');
|
|
73
|
+
const titles = new Map(outcomes.memories.map((memory) => [memory.id, memory.title]));
|
|
74
|
+
target.innerHTML = records.length ? '<ul class="list outcome-list" aria-label="Task outcomes">' + records.map((record) => {
|
|
75
|
+
const [tone, label] = Object.hasOwn(outcomeRatings, record.rating) ? outcomeRatings[record.rating] : ['', 'Reported'];
|
|
76
|
+
return '<li class="outcome-row"><h4>' + esc(record.task) + '</h4><div class="form-actions">' +
|
|
77
|
+
tags([['check-' + tone, label], ['memory', record.reporter === 'agent' ? 'Agent report' : 'User report']]) + dateMarkup(record.updatedAt, true) + '</div>' +
|
|
78
|
+
'<p class="small outcome-reason">' + esc(record.reason) + '</p>' + sourceMarkup(record.evidence) + '<div class="form-actions">' +
|
|
79
|
+
memoryLink(record.memoryId, record.projectId, titles.get(record.memoryId) || 'Open rated memory') +
|
|
80
|
+
'<button type="button" class="button quiet" data-outcome-remove="' + esc(record.id) + '">Remove report</button></div></li>';
|
|
81
|
+
}).join('') + '</ul>' : blank('activity', 'No task outcomes yet', 'Record whether a project memory helped with a specific task.');
|
|
82
|
+
syncOutcomeControls();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async function loadProjectFeedback() {
|
|
86
|
+
if (outcomes.loading || outcomes.saving || state.projectKit?.available !== true) return;
|
|
87
|
+
const target = $('kit-outcome-records');
|
|
88
|
+
outcomes.loading = true;
|
|
89
|
+
setBusy(target, true);
|
|
90
|
+
if (!outcomes.snapshot) target.innerHTML = skeleton('Reading reported outcomes…');
|
|
91
|
+
try {
|
|
92
|
+
const snapshot = await api('project-feedback');
|
|
93
|
+
if (!Number.isSafeInteger(snapshot.revision) || typeof snapshot.enabled !== 'boolean' || !Array.isArray(snapshot.records)) {
|
|
94
|
+
throw new Error('The server returned unreadable task outcomes.');
|
|
95
|
+
}
|
|
96
|
+
if (!outcomes.snapshot || snapshot.revision >= outcomes.snapshot.revision) outcomes.snapshot = snapshot;
|
|
97
|
+
renderOutcomeHistory();
|
|
98
|
+
} catch (error) {
|
|
99
|
+
outcomes.snapshot = null;
|
|
100
|
+
target.innerHTML = errorMarkup(error.message, 'kit-feedback');
|
|
101
|
+
$('kit-outcome-count').textContent = '';
|
|
102
|
+
} finally {
|
|
103
|
+
outcomes.loading = false;
|
|
104
|
+
setBusy(target, false);
|
|
105
|
+
syncOutcomeControls();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async function loadFeedbackMemories(focusMemory = '') {
|
|
110
|
+
const info = state.projectKit;
|
|
111
|
+
if (info?.available !== true) return;
|
|
112
|
+
const request = ++outcomes.memoryRequest;
|
|
113
|
+
const select = $('kit-outcome-memory');
|
|
114
|
+
const status = $('kit-outcome-memory-status');
|
|
115
|
+
const search = $('kit-outcome-search');
|
|
116
|
+
const q = $('kit-outcome-query').value.trim();
|
|
117
|
+
const selected = focusMemory || select.value;
|
|
118
|
+
status.textContent = 'Finding project memories…';
|
|
119
|
+
search.disabled = true;
|
|
120
|
+
try {
|
|
121
|
+
const result = await api(queryPath('memories', { project: info.projectId, q, limit: 25 }));
|
|
122
|
+
if (request !== outcomes.memoryRequest) return;
|
|
123
|
+
const memories = list(result.items).filter((item) => item.project === info.projectId);
|
|
124
|
+
if (focusMemory && !memories.some((item) => item.id === focusMemory)) {
|
|
125
|
+
try {
|
|
126
|
+
const detail = await api(queryPath('memory', { project: info.projectId, id: focusMemory }));
|
|
127
|
+
if (detail.memory?.project === info.projectId) memories.unshift(detail.memory);
|
|
128
|
+
} catch { /* The selected memory may no longer be available. */ }
|
|
129
|
+
}
|
|
130
|
+
if (request !== outcomes.memoryRequest) return;
|
|
131
|
+
outcomes.memories = memories;
|
|
132
|
+
outcomes.project = info.projectId;
|
|
133
|
+
optionSet('kit-outcome-memory', 'Choose a memory', memories.map((item) => ({ id: item.id, name: item.title || item.id })), selected);
|
|
134
|
+
status.textContent = memories.length ? countLabel(memories.length, 'memory', 'memories') + ' shown. Search to narrow the list.' :
|
|
135
|
+
q ? 'No memories matched this search.' : 'Save project knowledge to record a task outcome.';
|
|
136
|
+
if (focusMemory && !select.value) status.textContent = 'The requested memory is unavailable in this project.';
|
|
137
|
+
renderOutcomeHistory();
|
|
138
|
+
} catch (error) {
|
|
139
|
+
if (request === outcomes.memoryRequest) status.textContent = error.message;
|
|
140
|
+
} finally {
|
|
141
|
+
if (request === outcomes.memoryRequest) {
|
|
142
|
+
search.disabled = false;
|
|
143
|
+
syncOutcomeControls();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function openOutcomeEditor() {
|
|
149
|
+
$('kit-outcomes-heading').focus();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async function updateProjectFeedback(command) {
|
|
153
|
+
if (!outcomes.snapshot || outcomes.saving) return false;
|
|
154
|
+
const status = $('kit-outcome-status');
|
|
155
|
+
const before = outcomes.snapshot;
|
|
156
|
+
outcomes.saving = true;
|
|
157
|
+
syncOutcomeControls();
|
|
158
|
+
status.textContent = 'Saving task outcomes…';
|
|
159
|
+
let conflict = false;
|
|
160
|
+
try {
|
|
161
|
+
const result = await api('project-feedback', { body: { ...command, expectedRevision: before.revision } });
|
|
162
|
+
const snapshot = result.snapshot || result;
|
|
163
|
+
if (!Number.isSafeInteger(snapshot.revision) || typeof snapshot.enabled !== 'boolean' || !Array.isArray(snapshot.records)) {
|
|
164
|
+
throw new Error('The server returned unreadable task outcomes.');
|
|
165
|
+
}
|
|
166
|
+
outcomes.snapshot = snapshot;
|
|
167
|
+
state.context.dirty = !!state.context.pack || state.context.pending;
|
|
168
|
+
if (state.context.pack && !state.context.pending) renderContext();
|
|
169
|
+
renderOutcomeHistory();
|
|
170
|
+
status.textContent = command.kind === 'record' ? 'Reported outcome saved.' : command.kind === 'remove' ? 'Report removed.' :
|
|
171
|
+
command.enabled ? 'Outcome influence enabled.' : 'Outcome influence paused.';
|
|
172
|
+
return true;
|
|
173
|
+
} catch (error) {
|
|
174
|
+
conflict = error.status === 409;
|
|
175
|
+
status.innerHTML = errorMarkup(error.message);
|
|
176
|
+
return false;
|
|
177
|
+
} finally {
|
|
178
|
+
outcomes.saving = false;
|
|
179
|
+
syncOutcomeControls();
|
|
180
|
+
if (conflict) void loadProjectFeedback();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
async function saveOutcome() {
|
|
185
|
+
const memoryId = $('kit-outcome-memory').value;
|
|
186
|
+
const task = $('kit-outcome-task').value.trim();
|
|
187
|
+
const rating = $('kit-outcome-rating').value;
|
|
188
|
+
const reason = $('kit-outcome-reason').value.trim();
|
|
189
|
+
const referenceInput = $('kit-outcome-evidence').value;
|
|
190
|
+
const evidence = referenceInput.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
191
|
+
if (!memoryId || !task || !reason || !Object.hasOwn(outcomeRatings, rating)) {
|
|
192
|
+
$('kit-outcome-status').innerHTML = errorMarkup('Choose a memory and provide the task, outcome, and reason.');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (evidence.length > 3 || evidence.some((line) => line.length > 180)) {
|
|
196
|
+
$('kit-outcome-status').innerHTML = errorMarkup('Enter up to three references with at most 180 characters each.');
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (await updateProjectFeedback({ kind: 'record', memoryId, task, rating, reason, ...(evidence.length ? { evidence } : {}) })) {
|
|
200
|
+
if ($('kit-outcome-reason').value.trim() === reason) $('kit-outcome-reason').value = '';
|
|
201
|
+
if ($('kit-outcome-evidence').value === referenceInput) $('kit-outcome-evidence').value = '';
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
$('kit-feedback-enable').addEventListener('click', () => {
|
|
206
|
+
if (outcomes.snapshot) void updateProjectFeedback({ kind: 'enable', enabled: !outcomes.snapshot.enabled });
|
|
207
|
+
});
|
|
208
|
+
$('kit-outcome-search-form').addEventListener('submit', (event) => { event.preventDefault(); void loadFeedbackMemories(); });
|
|
209
|
+
$('kit-outcome-form').addEventListener('submit', (event) => { event.preventDefault(); void saveOutcome(); });
|
|
210
|
+
$('kit-outcome-memory').addEventListener('change', syncOutcomeControls);
|
|
211
|
+
$('kit-outcome-records').addEventListener('click', (event) => {
|
|
212
|
+
const button = event.target.closest('[data-outcome-remove]');
|
|
213
|
+
if (button) void updateProjectFeedback({ kind: 'remove', id: button.dataset.outcomeRemove });
|
|
214
|
+
});
|
|
215
|
+
`;
|
|
216
|
+
//# sourceMappingURL=project-feedback-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-feedback-html.js","sourceRoot":"","sources":["../../src/dashboard/project-feedback-html.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;CAkB/C,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhD,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoKhD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import type { ProjectHubService } from '../brain/project-hub.js';
|
|
3
|
+
export declare function isProjectHubRoute(pathname: string): boolean;
|
|
4
|
+
export declare function handleProjectHubRequest(request: IncomingMessage, response: ServerResponse, hub: ProjectHubService | undefined, url: URL): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=project-hub-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-hub-api.d.ts","sourceRoot":"","sources":["../../src/dashboard/project-hub-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA0CjE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAqE;AAEjI,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,iBAAiB,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAqD7J"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { HUB_LIMITS, HUB_OPERATOR, ProjectHubError } from '../brain/project-hub-contract.js';
|
|
2
|
+
import { ProjectKitError } from '../brain/project-kit-paths.js';
|
|
3
|
+
const prefix = '/api/workspace/hub';
|
|
4
|
+
const jsonLimit = 64 * 1024;
|
|
5
|
+
let uploadsInFlight = 0;
|
|
6
|
+
async function readBody(request, type, maximum) {
|
|
7
|
+
if (request.headers['content-type']?.split(';', 1)[0].trim().toLowerCase() !== type) {
|
|
8
|
+
throw new ProjectHubError('HUB_CONTENT_TYPE', 'Send ' + type + ' content.', 415);
|
|
9
|
+
}
|
|
10
|
+
const length = request.headers['content-length'];
|
|
11
|
+
if (length && (!/^\d+$/u.test(length) || Number(length) > maximum)) {
|
|
12
|
+
request.resume();
|
|
13
|
+
throw new ProjectHubError('HUB_BODY_LIMIT', 'Request body exceeds the byte limit.', 413);
|
|
14
|
+
}
|
|
15
|
+
const chunks = [];
|
|
16
|
+
let bytes = 0;
|
|
17
|
+
for await (const chunk of request.iterator({ destroyOnReturn: false })) {
|
|
18
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
19
|
+
bytes += buffer.length;
|
|
20
|
+
if (bytes > maximum) {
|
|
21
|
+
request.resume();
|
|
22
|
+
throw new ProjectHubError('HUB_BODY_LIMIT', 'Request body exceeds the byte limit.', 413);
|
|
23
|
+
}
|
|
24
|
+
chunks.push(buffer);
|
|
25
|
+
}
|
|
26
|
+
return Buffer.concat(chunks, bytes);
|
|
27
|
+
}
|
|
28
|
+
async function jsonBody(request) {
|
|
29
|
+
const body = await readBody(request, 'application/json', jsonLimit);
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(body.toString('utf8'));
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new ProjectHubError('HUB_INVALID_JSON', 'Send a valid JSON object.', 400);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function originCheck(request) {
|
|
38
|
+
const { origin, host } = request.headers;
|
|
39
|
+
if ((origin && origin !== 'http://' + host && origin !== 'https://' + host) || request.headers['sec-fetch-site'] === 'cross-site') {
|
|
40
|
+
throw new ProjectHubError('HUB_ORIGIN', 'Cross-origin changes are not accepted.', 403);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function isProjectHubRoute(pathname) { return pathname === prefix || pathname.startsWith(prefix + '/'); }
|
|
44
|
+
export async function handleProjectHubRequest(request, response, hub, url) {
|
|
45
|
+
const headers = { 'Cache-Control': 'no-store', 'X-Content-Type-Options': 'nosniff' };
|
|
46
|
+
const send = (data, status = 200) => {
|
|
47
|
+
response.writeHead(status, { ...headers, 'Content-Type': 'application/json; charset=utf-8' });
|
|
48
|
+
response.end(JSON.stringify(data));
|
|
49
|
+
};
|
|
50
|
+
try {
|
|
51
|
+
if (!hub)
|
|
52
|
+
throw new ProjectHubError('HUB_LOCAL_PROJECT_REQUIRED', 'Open a project-local workspace to use the Brain Hub.', 409);
|
|
53
|
+
const method = request.method ?? 'GET';
|
|
54
|
+
if (method !== 'GET' && method !== 'POST')
|
|
55
|
+
throw new ProjectHubError('HUB_METHOD', 'Method not allowed.', 405);
|
|
56
|
+
if (method === 'POST')
|
|
57
|
+
originCheck(request);
|
|
58
|
+
const segments = url.pathname.slice(prefix.length).split('/').slice(1);
|
|
59
|
+
const [section, id, action, target] = segments;
|
|
60
|
+
if (method === 'GET') {
|
|
61
|
+
if (!segments.length)
|
|
62
|
+
return send(hub.overview());
|
|
63
|
+
if (section === 'documents' && segments.length === 2)
|
|
64
|
+
return send(hub.document(id));
|
|
65
|
+
if (section === 'rooms' && segments.length === 2) {
|
|
66
|
+
const after = url.searchParams.get('after') ?? '0';
|
|
67
|
+
if (!/^\d+$/u.test(after))
|
|
68
|
+
throw new ProjectHubError('HUB_INVALID_CURSOR', 'Use a nonnegative event cursor.', 400);
|
|
69
|
+
return send(hub.room(id, Number(after)));
|
|
70
|
+
}
|
|
71
|
+
if (section === 'rooms' && action === 'artifacts' && segments.length === 4) {
|
|
72
|
+
const { artifact, bytes } = hub.artifact(id, target);
|
|
73
|
+
const name = artifact.path.split('/').at(-1);
|
|
74
|
+
response.writeHead(200, { ...headers, 'Content-Type': 'application/octet-stream', 'Content-Length': bytes.length,
|
|
75
|
+
'Content-Disposition': "attachment; filename*=UTF-8''" + encodeURIComponent(name).replace(/['()*]/gu, char => '%' + char.charCodeAt(0).toString(16)),
|
|
76
|
+
'Content-Security-Policy': 'sandbox', 'X-Artifact-SHA256': artifact.sha256 });
|
|
77
|
+
response.end(bytes);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
if (section === 'documents' && segments.length === 1) {
|
|
83
|
+
if (uploadsInFlight >= 2) {
|
|
84
|
+
request.resume();
|
|
85
|
+
throw new ProjectHubError('HUB_UPLOAD_BUSY', 'PDF intake is busy. Retry after the active upload finishes.', 409);
|
|
86
|
+
}
|
|
87
|
+
uploadsInFlight++;
|
|
88
|
+
try {
|
|
89
|
+
const data = await readBody(request, 'application/pdf', HUB_LIMITS.pdfBytes);
|
|
90
|
+
return send(await hub.upload(url.searchParams.get('name') ?? '', data));
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
uploadsInFlight--;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (section === 'documents' && action === 'review' && segments.length === 3)
|
|
97
|
+
return send(await hub.reviewDocument(id, await jsonBody(request)));
|
|
98
|
+
if (section === 'rooms' && segments.length === 1)
|
|
99
|
+
return send(hub.createRoom(await jsonBody(request), HUB_OPERATOR));
|
|
100
|
+
if (section === 'rooms' && action === 'actions' && segments.length === 3)
|
|
101
|
+
return send(hub.roomAction(id, await jsonBody(request), HUB_OPERATOR));
|
|
102
|
+
if (section === 'lessons' && segments.length === 1)
|
|
103
|
+
return send(hub.createLesson(await jsonBody(request), HUB_OPERATOR));
|
|
104
|
+
if (section === 'lessons' && action === 'actions' && segments.length === 3)
|
|
105
|
+
return send(await hub.lessonAction(id, await jsonBody(request), HUB_OPERATOR));
|
|
106
|
+
}
|
|
107
|
+
throw new ProjectHubError('HUB_NOT_FOUND', 'Project hub route was not found.', 404);
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (response.destroyed || response.writableEnded)
|
|
111
|
+
return;
|
|
112
|
+
if (error instanceof ProjectHubError)
|
|
113
|
+
return send({ error: error.message, code: error.code }, error.status);
|
|
114
|
+
if (error instanceof ProjectKitError)
|
|
115
|
+
return send({ error: error.message, code: error.code }, 400);
|
|
116
|
+
if (error instanceof TypeError)
|
|
117
|
+
return send({ error: 'Invalid project hub request.', code: 'HUB_INVALID_INPUT' }, 400);
|
|
118
|
+
return send({ error: 'The project hub operation could not be completed. Retry with the same operation key.', code: 'HUB_OPERATION_FAILED' }, 503);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=project-hub-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-hub-api.js","sourceRoot":"","sources":["../../src/dashboard/project-hub-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,MAAM,MAAM,GAAG,oBAAoB,CAAC;AACpC,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5B,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB,KAAK,UAAU,QAAQ,CAAC,OAAwB,EAAE,IAAY,EAAE,OAAe;IAC7E,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;QACpF,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,OAAO,GAAG,IAAI,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjD,IAAI,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;QACnE,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,sCAAsC,EAAE,GAAG,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QACvB,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,sCAAsC,EAAE,GAAG,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAwB;IAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY,CAAC;IAAC,CAAC;IAC5D,MAAM,CAAC;QAAC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,GAAG,CAAC,CAAC;IAAC,CAAC;AAC5F,CAAC;AAED,SAAS,WAAW,CAAC,OAAwB;IAC3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IACzC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,SAAS,GAAG,IAAI,IAAI,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,YAAY,EAAE,CAAC;QAClI,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,wCAAwC,EAAE,GAAG,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB,IAAa,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAEjI,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAwB,EAAE,QAAwB,EAAE,GAAkC,EAAE,GAAQ;IAC5I,MAAM,OAAO,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC;IACrF,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE;QAC3C,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAC;QAC9F,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,IAAI,CAAC;QACH,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,eAAe,CAAC,4BAA4B,EAAE,sDAAsD,EAAE,GAAG,CAAC,CAAC;QAC/H,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;QACvC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;YAAE,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAC/G,IAAI,MAAM,KAAK,MAAM;YAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC;QAC/C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClD,IAAI,OAAO,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;gBACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;gBACnH,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,OAAO,KAAK,OAAO,IAAI,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3E,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;gBAC9C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,KAAK,CAAC,MAAM;oBAC9G,qBAAqB,EAAE,+BAA+B,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACpJ,yBAAyB,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChF,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrD,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;oBAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAAC,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,6DAA6D,EAAE,GAAG,CAAC,CAAC;gBAAC,CAAC;gBACjK,eAAe,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC7E,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC1E,CAAC;wBAAS,CAAC;oBAAC,eAAe,EAAE,CAAC;gBAAC,CAAC;YAClC,CAAC;YACD,IAAI,OAAO,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChJ,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YACrH,IAAI,OAAO,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YACjJ,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YACzH,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7J,CAAC;QACD,MAAM,IAAI,eAAe,CAAC,eAAe,EAAE,kCAAkC,EAAE,GAAG,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,aAAa;YAAE,OAAO;QACzD,IAAI,KAAK,YAAY,eAAe;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5G,IAAI,KAAK,YAAY,eAAe;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACnG,IAAI,KAAK,YAAY,SAAS;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;QACvH,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,sFAAsF,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAC;IACpJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-kit-html.d.ts","sourceRoot":"","sources":["../../src/dashboard/project-kit-html.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,QAwC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAsD9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAmQ9B,CAAC"}
|