forge-openclaw-plugin 0.2.24 → 0.2.26
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/README.md +13 -0
- package/dist/assets/{board-_C6oMy5w.js → board-ta0rUHOf.js} +3 -3
- package/dist/assets/{board-_C6oMy5w.js.map → board-ta0rUHOf.js.map} +1 -1
- package/dist/assets/index-Ro0ZF_az.css +1 -0
- package/dist/assets/index-ytlpSj23.js +79 -0
- package/dist/assets/index-ytlpSj23.js.map +1 -0
- package/dist/assets/{motion-D4sZgCHd.js → motion-fBKPB6yw.js} +3 -3
- package/dist/assets/motion-fBKPB6yw.js.map +1 -0
- package/dist/assets/{table-BWzTaky1.js → table-C-IGTQni.js} +2 -2
- package/dist/assets/{table-BWzTaky1.js.map → table-C-IGTQni.js.map} +1 -1
- package/dist/assets/{ui-BzK4azQb.js → ui-DInOpaYF.js} +2 -2
- package/dist/assets/{ui-BzK4azQb.js.map → ui-DInOpaYF.js.map} +1 -1
- package/dist/assets/vendor-lE3tZJcC.js +876 -0
- package/dist/assets/vendor-lE3tZJcC.js.map +1 -0
- package/dist/index.html +7 -8
- package/dist/openclaw/local-runtime.d.ts +3 -1
- package/dist/openclaw/local-runtime.js +51 -15
- package/dist/openclaw/parity.d.ts +1 -1
- package/dist/openclaw/parity.js +29 -0
- package/dist/openclaw/plugin-entry-shared.d.ts +1 -0
- package/dist/openclaw/plugin-entry-shared.js +31 -6
- package/dist/openclaw/plugin-sdk-types.d.ts +29 -0
- package/dist/openclaw/routes.js +236 -0
- package/dist/openclaw/session-bootstrap.d.ts +78 -0
- package/dist/openclaw/session-bootstrap.js +240 -0
- package/dist/openclaw/tools.js +279 -6
- package/dist/server/server/migrations/001_core.sql +411 -0
- package/dist/server/server/migrations/002_psyche.sql +392 -0
- package/dist/server/server/migrations/003_habits.sql +30 -0
- package/dist/server/server/migrations/004_habit_links.sql +8 -0
- package/dist/server/server/migrations/005_habit_psyche_links.sql +24 -0
- package/dist/server/server/migrations/006_work_adjustments.sql +14 -0
- package/dist/server/server/migrations/007_weekly_review_closures.sql +17 -0
- package/dist/server/server/migrations/008_calendar_execution.sql +147 -0
- package/dist/server/server/migrations/009_true_calendar_events.sql +195 -0
- package/dist/server/server/migrations/010_calendar_selection_state.sql +6 -0
- package/dist/server/server/migrations/011_calendar_timezone_backfill.sql +11 -0
- package/dist/server/server/migrations/012_work_block_ranges.sql +7 -0
- package/dist/server/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
- package/dist/server/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
- package/dist/server/server/migrations/015_multi_user_and_strategies.sql +244 -0
- package/dist/server/server/migrations/016_health_companion.sql +158 -0
- package/dist/server/server/migrations/016_strategy_contracts_and_user_graph.sql +22 -0
- package/dist/server/server/migrations/017_preferences.sql +131 -0
- package/dist/server/server/migrations/018_preference_catalogs.sql +31 -0
- package/dist/server/server/migrations/019_wiki_memory.sql +255 -0
- package/dist/server/server/migrations/020_wiki_page_hierarchy.sql +11 -0
- package/dist/server/server/migrations/021_hide_evidence_from_wiki_index.sql +3 -0
- package/dist/server/server/migrations/022_wiki_ingest_background.sql +85 -0
- package/dist/server/server/migrations/023_diagnostic_logs.sql +28 -0
- package/dist/server/server/migrations/024_questionnaires.sql +96 -0
- package/dist/server/server/migrations/025_ai_model_connections.sql +26 -0
- package/dist/server/server/migrations/026_custom_theme_settings.sql +2 -0
- package/dist/server/server/migrations/027_ai_processors.sql +31 -0
- package/dist/server/server/migrations/028_movement_domain.sql +136 -0
- package/dist/server/server/migrations/029_watch_micro_capture.sql +23 -0
- package/dist/server/server/migrations/030_surface_layouts.sql +5 -0
- package/dist/server/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
- package/dist/server/server/migrations/032_ai_connectors.sql +44 -0
- package/dist/server/server/migrations/033_movement_trip_point_sync.sql +36 -0
- package/dist/server/server/migrations/034_movement_segment_sync.sql +49 -0
- package/dist/server/server/migrations/035_google_local_auth_settings.sql +2 -0
- package/dist/server/server/migrations/036_google_local_auth_client_secret.sql +2 -0
- package/dist/server/{app.js → server/src/app.js} +992 -25
- package/dist/server/server/src/connectors/box-registry.js +188 -0
- package/dist/server/{db.js → server/src/db.js} +6 -0
- package/dist/server/server/src/debug.js +19 -0
- package/dist/server/server/src/discovery-advertiser.js +114 -0
- package/dist/server/{health.js → server/src/health.js} +39 -11
- package/dist/server/{index.js → server/src/index.js} +4 -0
- package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +40 -4
- package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +129 -19
- package/dist/server/server/src/movement.js +2935 -0
- package/dist/server/{openapi.js → server/src/openapi.js} +628 -5
- package/dist/server/{psyche-types.js → server/src/psyche-types.js} +15 -1
- package/dist/server/server/src/questionnaire-flow.js +552 -0
- package/dist/server/server/src/questionnaire-seeds.js +853 -0
- package/dist/server/server/src/questionnaire-types.js +340 -0
- package/dist/server/server/src/repositories/ai-connectors.js +1207 -0
- package/dist/server/server/src/repositories/ai-processors.js +547 -0
- package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
- package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +9 -1
- package/dist/server/{repositories → server/src/repositories}/habits.js +69 -5
- package/dist/server/server/src/repositories/model-settings.js +216 -0
- package/dist/server/{repositories → server/src/repositories}/notes.js +57 -15
- package/dist/server/{repositories → server/src/repositories}/preferences.js +124 -0
- package/dist/server/server/src/repositories/questionnaires.js +1338 -0
- package/dist/server/{repositories → server/src/repositories}/settings.js +156 -12
- package/dist/server/server/src/repositories/surface-layouts.js +76 -0
- package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +5 -1
- package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
- package/dist/server/{services → server/src/services}/entity-crud.js +81 -2
- package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
- package/dist/server/server/src/services/openai-codex-oauth.js +153 -0
- package/dist/server/server/src/services/psyche-observation-calendar.js +46 -0
- package/dist/server/{types.js → server/src/types.js} +621 -14
- package/dist/server/server/src/watch-mobile.js +562 -0
- package/dist/server/{web.js → server/src/web.js} +30 -4
- package/dist/server/src/components/customization/utility-widgets.js +330 -0
- package/dist/server/src/components/workbench-boxes/health/health-boxes.js +92 -0
- package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +128 -0
- package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +37 -0
- package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +114 -0
- package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +57 -0
- package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +4 -0
- package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +13 -0
- package/dist/server/src/components/workbench-boxes/today/today-boxes.js +63 -0
- package/dist/server/src/lib/api-error.js +37 -0
- package/dist/server/src/lib/api.js +1859 -0
- package/dist/server/src/lib/calendar-name-deduper.js +144 -0
- package/dist/server/src/lib/diagnostics.js +67 -0
- package/dist/server/src/lib/psyche-types.js +1 -0
- package/dist/server/src/lib/questionnaire-types.js +1 -0
- package/dist/server/src/lib/runtime-paths.js +24 -0
- package/dist/server/src/lib/schemas.js +234 -0
- package/dist/server/src/lib/snapshot-normalizer.js +374 -0
- package/dist/server/src/lib/theme-system.js +319 -0
- package/dist/server/src/lib/types.js +1 -0
- package/dist/server/src/lib/utils.js +22 -0
- package/dist/server/src/lib/workbench/boxes.js +16 -0
- package/dist/server/src/lib/workbench/nodes.js +15 -0
- package/dist/server/src/lib/workbench/registry.js +73 -0
- package/dist/server/src/lib/workbench/runtime.js +181 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +6 -1
- package/server/index.js +68 -0
- package/server/migrations/024_questionnaires.sql +96 -0
- package/server/migrations/025_ai_model_connections.sql +26 -0
- package/server/migrations/026_custom_theme_settings.sql +2 -0
- package/server/migrations/027_ai_processors.sql +31 -0
- package/server/migrations/028_movement_domain.sql +136 -0
- package/server/migrations/029_watch_micro_capture.sql +23 -0
- package/server/migrations/030_surface_layouts.sql +5 -0
- package/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
- package/server/migrations/032_ai_connectors.sql +44 -0
- package/server/migrations/033_movement_trip_point_sync.sql +36 -0
- package/server/migrations/034_movement_segment_sync.sql +49 -0
- package/server/migrations/035_google_local_auth_settings.sql +2 -0
- package/server/migrations/036_google_local_auth_client_secret.sql +2 -0
- package/skills/forge-openclaw/SKILL.md +15 -1
- package/skills/forge-openclaw/entity_conversation_playbooks.md +523 -87
- package/skills/forge-openclaw/psyche_entity_playbooks.md +331 -221
- package/dist/assets/index-DTCwBWAs.js +0 -65
- package/dist/assets/index-DTCwBWAs.js.map +0 -1
- package/dist/assets/index-DttXlAgi.css +0 -1
- package/dist/assets/motion-D4sZgCHd.js.map +0 -1
- package/dist/assets/vendor-De38P6YR.js +0 -729
- package/dist/assets/vendor-De38P6YR.js.map +0 -1
- package/dist/assets/viz-C6hfyqzu.js +0 -34
- package/dist/assets/viz-C6hfyqzu.js.map +0 -1
- package/skills/forge-openclaw/cron_jobs.md +0 -395
- /package/dist/server/{demo-data.js → server/src/demo-data.js} +0 -0
- /package/dist/server/{e2e-server.js → server/src/e2e-server.js} +0 -0
- /package/dist/server/{errors.js → server/src/errors.js} +0 -0
- /package/dist/server/{managers → server/src/managers}/base.js +0 -0
- /package/dist/server/{managers → server/src/managers}/contracts.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/api-gateway-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/audit-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/authentication-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/authorization-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/background-job-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/configuration-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/database-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/event-bus-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/external-service-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/health-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/migration-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/search-index-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/secrets-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/session-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/storage-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/token-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/transaction-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/trusted-network.js +0 -0
- /package/dist/server/{managers → server/src/managers}/runtime.js +0 -0
- /package/dist/server/{managers → server/src/managers}/type-guards.js +0 -0
- /package/dist/server/{preferences-seeds.js → server/src/preferences-seeds.js} +0 -0
- /package/dist/server/{preferences-types.js → server/src/preferences-types.js} +0 -0
- /package/dist/server/{repositories → server/src/repositories}/activity-events.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/collaboration.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/deleted-entities.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/diagnostic-logs.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/domains.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/event-log.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/goals.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/projects.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/psyche.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/rewards.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/strategies.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/tags.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/task-runs.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/tasks.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/users.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/weekly-reviews.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/work-adjustments.js +0 -0
- /package/dist/server/{seed-demo.js → server/src/seed-demo.js} +0 -0
- /package/dist/server/{services → server/src/services}/context.js +0 -0
- /package/dist/server/{services → server/src/services}/dashboard.js +0 -0
- /package/dist/server/{services → server/src/services}/gamification.js +0 -0
- /package/dist/server/{services → server/src/services}/insights.js +0 -0
- /package/dist/server/{services → server/src/services}/projects.js +0 -0
- /package/dist/server/{services → server/src/services}/psyche.js +0 -0
- /package/dist/server/{services → server/src/services}/relations.js +0 -0
- /package/dist/server/{services → server/src/services}/reviews.js +0 -0
- /package/dist/server/{services → server/src/services}/run-recovery.js +0 -0
- /package/dist/server/{services → server/src/services}/tagging.js +0 -0
- /package/dist/server/{services → server/src/services}/task-run-watchdog.js +0 -0
- /package/dist/server/{services → server/src/services}/work-time.js +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { buildSearchWorkbenchExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
|
|
3
|
+
import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
|
|
4
|
+
import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
|
|
5
|
+
function Slot({ children }) {
|
|
6
|
+
return _jsx(_Fragment, { children: children });
|
|
7
|
+
}
|
|
8
|
+
export const NoteFiltersBox = defineWorkbenchBox(Slot, {
|
|
9
|
+
id: "surface:notes-index:filters",
|
|
10
|
+
surfaceId: "notes-index",
|
|
11
|
+
routePath: "/notes",
|
|
12
|
+
title: "Note filters",
|
|
13
|
+
icon: "filter",
|
|
14
|
+
description: "Entity, tag, text, author, and date filters for notes.",
|
|
15
|
+
category: "Notes",
|
|
16
|
+
tags: ["notes", "filters", "search"],
|
|
17
|
+
inputs: [],
|
|
18
|
+
params: [],
|
|
19
|
+
output: [{ key: "primary", label: "Note filters", kind: "content" }],
|
|
20
|
+
tools: [
|
|
21
|
+
{
|
|
22
|
+
key: "forge.search_entities",
|
|
23
|
+
label: "Search Forge entities",
|
|
24
|
+
description: "Search Forge entities by query and entity types.",
|
|
25
|
+
accessMode: "read"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
NodeView: createGenericWorkbenchNodeView({
|
|
29
|
+
title: "Note filters",
|
|
30
|
+
description: "Entity, tag, text, author, and date filters for notes.",
|
|
31
|
+
inputs: [],
|
|
32
|
+
params: [],
|
|
33
|
+
output: [{ key: "primary", label: "Note filters", kind: "content" }],
|
|
34
|
+
tools: [
|
|
35
|
+
{
|
|
36
|
+
key: "forge.search_entities",
|
|
37
|
+
label: "Search Forge entities",
|
|
38
|
+
description: "Search Forge entities by query and entity types.",
|
|
39
|
+
accessMode: "read"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}),
|
|
43
|
+
execute: (input) => buildSearchWorkbenchExecution(input, {
|
|
44
|
+
query: "",
|
|
45
|
+
entityTypes: ["note"],
|
|
46
|
+
limit: 20
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
export const NoteComposerBox = defineWorkbenchBox(Slot, {
|
|
50
|
+
id: "surface:notes-index:composer",
|
|
51
|
+
surfaceId: "notes-index",
|
|
52
|
+
routePath: "/notes",
|
|
53
|
+
title: "Note composer",
|
|
54
|
+
icon: "write",
|
|
55
|
+
description: "Markdown note composer with links, tags, and capture actions.",
|
|
56
|
+
category: "Notes",
|
|
57
|
+
tags: ["notes", "composer", "capture"],
|
|
58
|
+
inputs: [],
|
|
59
|
+
params: [],
|
|
60
|
+
output: [{ key: "primary", label: "Note draft", kind: "content" }],
|
|
61
|
+
tools: [
|
|
62
|
+
{
|
|
63
|
+
key: "forge.create_note",
|
|
64
|
+
label: "Create note",
|
|
65
|
+
description: "Create an evidence note from markdown content.",
|
|
66
|
+
accessMode: "write"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
NodeView: createGenericWorkbenchNodeView({
|
|
70
|
+
title: "Note composer",
|
|
71
|
+
description: "Markdown note composer with links, tags, and capture actions.",
|
|
72
|
+
inputs: [],
|
|
73
|
+
params: [],
|
|
74
|
+
output: [{ key: "primary", label: "Note draft", kind: "content" }],
|
|
75
|
+
tools: [
|
|
76
|
+
{
|
|
77
|
+
key: "forge.create_note",
|
|
78
|
+
label: "Create note",
|
|
79
|
+
description: "Create an evidence note from markdown content.",
|
|
80
|
+
accessMode: "write"
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}),
|
|
84
|
+
execute: (input) => buildStaticWorkbenchExecution(input, {
|
|
85
|
+
draftable: true
|
|
86
|
+
}, "This node can draft or create a note.")
|
|
87
|
+
});
|
|
88
|
+
export const NotesLibraryBox = defineWorkbenchBox(Slot, {
|
|
89
|
+
id: "surface:notes-index:library",
|
|
90
|
+
surfaceId: "notes-index",
|
|
91
|
+
routePath: "/notes",
|
|
92
|
+
title: "Notes library",
|
|
93
|
+
icon: "library",
|
|
94
|
+
description: "Filtered library of Forge notes and linked evidence.",
|
|
95
|
+
category: "Notes",
|
|
96
|
+
tags: ["notes", "library", "history"],
|
|
97
|
+
inputs: [],
|
|
98
|
+
params: [],
|
|
99
|
+
output: [{ key: "primary", label: "Notes library", kind: "content" }],
|
|
100
|
+
tools: [],
|
|
101
|
+
NodeView: createGenericWorkbenchNodeView({
|
|
102
|
+
title: "Notes library",
|
|
103
|
+
description: "Filtered library of Forge notes and linked evidence.",
|
|
104
|
+
inputs: [],
|
|
105
|
+
params: [],
|
|
106
|
+
output: [{ key: "primary", label: "Notes library", kind: "content" }],
|
|
107
|
+
tools: []
|
|
108
|
+
}),
|
|
109
|
+
execute: (input) => buildSearchWorkbenchExecution(input, {
|
|
110
|
+
query: "",
|
|
111
|
+
entityTypes: ["note"],
|
|
112
|
+
limit: 20
|
|
113
|
+
})
|
|
114
|
+
});
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { buildSearchWorkbenchExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
|
|
3
|
+
import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
|
|
4
|
+
import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
|
|
5
|
+
function Slot({ children }) {
|
|
6
|
+
return _jsx(_Fragment, { children: children });
|
|
7
|
+
}
|
|
8
|
+
function defineProjectBox(id, title, description, tags, execute) {
|
|
9
|
+
return defineWorkbenchBox(Slot, {
|
|
10
|
+
id,
|
|
11
|
+
surfaceId: "projects",
|
|
12
|
+
routePath: "/projects",
|
|
13
|
+
title,
|
|
14
|
+
icon: "projects",
|
|
15
|
+
description,
|
|
16
|
+
category: "Projects",
|
|
17
|
+
tags,
|
|
18
|
+
inputs: [],
|
|
19
|
+
params: [],
|
|
20
|
+
output: [{ key: "primary", label: title, kind: "content" }],
|
|
21
|
+
tools: id === "surface:projects:search-results"
|
|
22
|
+
? [
|
|
23
|
+
{
|
|
24
|
+
key: "forge.search_entities",
|
|
25
|
+
label: "Search Forge entities",
|
|
26
|
+
description: "Search Forge entities by query and entity types.",
|
|
27
|
+
accessMode: "read"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
: [],
|
|
31
|
+
NodeView: createGenericWorkbenchNodeView({
|
|
32
|
+
title,
|
|
33
|
+
description,
|
|
34
|
+
inputs: [],
|
|
35
|
+
params: [],
|
|
36
|
+
output: [{ key: "primary", label: title, kind: "content" }],
|
|
37
|
+
tools: id === "surface:projects:search-results"
|
|
38
|
+
? [
|
|
39
|
+
{
|
|
40
|
+
key: "forge.search_entities",
|
|
41
|
+
label: "Search Forge entities",
|
|
42
|
+
description: "Search Forge entities by query and entity types.",
|
|
43
|
+
accessMode: "read"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
: []
|
|
47
|
+
}),
|
|
48
|
+
execute
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export const ProjectsHeroBox = defineProjectBox("surface:projects:hero", "Projects hero", "Projects page header.", ["projects", "hero"], (input) => buildStaticWorkbenchExecution(input, null, "Projects page header."));
|
|
52
|
+
export const ProjectsSearchResultsBox = defineProjectBox("surface:projects:search-results", "Search and results", "Project browser, filters, and search context.", ["projects", "search"], (input) => buildSearchWorkbenchExecution(input, {
|
|
53
|
+
query: "",
|
|
54
|
+
entityTypes: ["project"],
|
|
55
|
+
limit: 20
|
|
56
|
+
}));
|
|
57
|
+
export const ProjectsSummaryBox = defineProjectBox("surface:projects:summary", "Collection summary", "Collection summary and project state metrics.", ["projects", "summary"], (input) => buildStaticWorkbenchExecution(input, null, "Project collection summary."));
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Handle, Position } from "@xyflow/react";
|
|
3
|
+
import { cn } from "../../../lib/utils.js";
|
|
4
|
+
function PortList({ title, ports, align }) {
|
|
5
|
+
return (_jsxs("div", { className: "grid gap-1.5", children: [_jsx("div", { className: cn("text-[10px] uppercase tracking-[0.18em] text-white/34", align === "left" ? "text-left" : "text-right"), children: title }), ports.length === 0 ? (_jsx("div", { className: "rounded-full border border-dashed border-white/10 px-3 py-1.5 text-[11px] text-white/28", children: "None" })) : null, ports.map((port) => (_jsxs("div", { className: cn("relative rounded-full bg-white/[0.05] px-3 py-1.5 text-[11px] text-white/62", align === "left" ? "pl-5 text-left" : "pr-5 text-right"), children: [_jsx(Handle, { type: align === "left" ? "target" : "source", position: align === "left" ? Position.Left : Position.Right, id: port.key, className: "!size-2.5 !border !border-white/80 !bg-[#b8c5ff]", style: {
|
|
6
|
+
[align]: 6
|
|
7
|
+
} }), port.label] }, port.key)))] }));
|
|
8
|
+
}
|
|
9
|
+
export function createGenericWorkbenchNodeView(definition) {
|
|
10
|
+
return function GenericWorkbenchNodeView(_props) {
|
|
11
|
+
return (_jsxs("div", { className: "min-w-[280px] rounded-[24px] border border-white/10 bg-[linear-gradient(180deg,rgba(20,28,45,0.98),rgba(11,16,29,0.98))] p-3 shadow-[0_26px_80px_rgba(0,0,0,0.4)]", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-semibold text-white", children: definition.title }), _jsx("div", { className: "mt-1 line-clamp-2 text-[12px] leading-5 text-white/48", children: definition.description })] }), _jsx("div", { className: "rounded-full bg-white/[0.06] px-2.5 py-1 text-[10px] uppercase tracking-[0.16em] text-white/56", children: "box" })] }), definition.params.length > 0 ? (_jsxs("div", { className: "mt-3 rounded-[18px] bg-white/[0.04] px-3 py-2 text-[11px] text-white/52", children: [definition.params.length, " param", definition.params.length === 1 ? "" : "s", " configurable in the flow editor"] })) : null, definition.tools.length > 0 ? (_jsxs("div", { className: "mt-2 rounded-[18px] bg-white/[0.04] px-3 py-2 text-[11px] text-white/52", children: [definition.tools.length, " tool", definition.tools.length === 1 ? "" : "s", " available"] })) : null, _jsxs("div", { className: "mt-3 grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3", children: [_jsx(PortList, { title: "Inputs", ports: definition.inputs, align: "left" }), _jsx(PortList, { title: "Outputs", ports: definition.output, align: "right" })] })] }));
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { buildSearchWorkbenchExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
|
|
3
|
+
import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
|
|
4
|
+
import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
|
|
5
|
+
function Slot({ children }) {
|
|
6
|
+
return _jsx(_Fragment, { children: children });
|
|
7
|
+
}
|
|
8
|
+
function defineTodayBox(id, title, description, tags, execute, withSearchTool = false) {
|
|
9
|
+
return defineWorkbenchBox(Slot, {
|
|
10
|
+
id,
|
|
11
|
+
surfaceId: "today",
|
|
12
|
+
routePath: "/today",
|
|
13
|
+
title,
|
|
14
|
+
icon: "today",
|
|
15
|
+
description,
|
|
16
|
+
category: "Today",
|
|
17
|
+
tags,
|
|
18
|
+
inputs: [],
|
|
19
|
+
params: [],
|
|
20
|
+
output: [{ key: "primary", label: title, kind: "content" }],
|
|
21
|
+
tools: withSearchTool
|
|
22
|
+
? [
|
|
23
|
+
{
|
|
24
|
+
key: "forge.search_entities",
|
|
25
|
+
label: "Search Forge entities",
|
|
26
|
+
description: "Search Forge entities by query and entity types.",
|
|
27
|
+
accessMode: "read"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
: [],
|
|
31
|
+
NodeView: createGenericWorkbenchNodeView({
|
|
32
|
+
title,
|
|
33
|
+
description,
|
|
34
|
+
inputs: [],
|
|
35
|
+
params: [],
|
|
36
|
+
output: [{ key: "primary", label: title, kind: "content" }],
|
|
37
|
+
tools: withSearchTool
|
|
38
|
+
? [
|
|
39
|
+
{
|
|
40
|
+
key: "forge.search_entities",
|
|
41
|
+
label: "Search Forge entities",
|
|
42
|
+
description: "Search Forge entities by query and entity types.",
|
|
43
|
+
accessMode: "read"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
: []
|
|
47
|
+
}),
|
|
48
|
+
execute
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export const TodayHeroBox = defineTodayBox("surface:today:hero", "Today hero", "Daily execution header and directive.", ["today", "hero"], (input) => buildStaticWorkbenchExecution(input, null, "Daily execution header."));
|
|
52
|
+
export const TodayMetricsBox = defineTodayBox("surface:today:metrics", "Live metrics", "Daily XP, level, and momentum metrics.", ["today", "metrics"], (input) => buildStaticWorkbenchExecution(input, null, "Daily metrics."));
|
|
53
|
+
export const TodayRunwayBox = defineTodayBox("surface:today:runway", "Runway", "Execution lane and current work.", ["today", "execution"], (input) => buildSearchWorkbenchExecution(input, {
|
|
54
|
+
query: "",
|
|
55
|
+
entityTypes: ["task", "habit"],
|
|
56
|
+
limit: 16
|
|
57
|
+
}), true);
|
|
58
|
+
export const TodayCalendarBox = defineTodayBox("surface:today:calendar", "Calendar", "Calendar context for today.", ["today", "calendar"], (input) => buildStaticWorkbenchExecution(input, null, "Today's calendar context."));
|
|
59
|
+
export const TodayFocusBox = defineTodayBox("surface:today:focus", "Current focus", "Today priorities and focus context.", ["today", "focus"], (input) => buildSearchWorkbenchExecution(input, {
|
|
60
|
+
query: "",
|
|
61
|
+
entityTypes: ["task", "habit"],
|
|
62
|
+
limit: 16
|
|
63
|
+
}), true);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class ForgeApiError extends Error {
|
|
2
|
+
status;
|
|
3
|
+
code;
|
|
4
|
+
details;
|
|
5
|
+
requestPath;
|
|
6
|
+
constructor(input) {
|
|
7
|
+
super(input.message);
|
|
8
|
+
this.name = "ForgeApiError";
|
|
9
|
+
this.status = input.status;
|
|
10
|
+
this.code = input.code;
|
|
11
|
+
this.details = input.details ?? [];
|
|
12
|
+
this.requestPath = input.requestPath;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function describeApiError(error) {
|
|
16
|
+
if (error instanceof ForgeApiError) {
|
|
17
|
+
return {
|
|
18
|
+
title: `Request failed (${error.status})`,
|
|
19
|
+
description: error.details.length > 0
|
|
20
|
+
? `${error.message} ${error.details.map((detail) => `${detail.path}: ${detail.message}`).join(" · ")}`
|
|
21
|
+
: error.message,
|
|
22
|
+
code: error.code
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (error instanceof Error) {
|
|
26
|
+
return {
|
|
27
|
+
title: "Something went wrong",
|
|
28
|
+
description: error.message,
|
|
29
|
+
code: "unknown_error"
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
title: "Something went wrong",
|
|
34
|
+
description: "Unexpected API failure.",
|
|
35
|
+
code: "unknown_error"
|
|
36
|
+
};
|
|
37
|
+
}
|