forge-openclaw-plugin 0.2.25 → 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/dist/assets/{board-VmF4FAfr.js → board-ta0rUHOf.js} +3 -3
- package/dist/assets/{board-VmF4FAfr.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-DvkU14p-.js → motion-fBKPB6yw.js} +2 -2
- package/dist/assets/{motion-DvkU14p-.js.map → motion-fBKPB6yw.js.map} +1 -1
- package/dist/assets/{table-DgiPof9E.js → table-C-IGTQni.js} +2 -2
- package/dist/assets/{table-DgiPof9E.js.map → table-C-IGTQni.js.map} +1 -1
- package/dist/assets/{ui-nYfoC0Gq.js → ui-DInOpaYF.js} +2 -2
- package/dist/assets/{ui-nYfoC0Gq.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/plugin-entry-shared.js +24 -2
- package/dist/openclaw/plugin-sdk-types.d.ts +17 -0
- package/dist/openclaw/tools.js +0 -3
- 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} +242 -111
- package/dist/server/server/src/connectors/box-registry.js +188 -0
- package/dist/server/{db.js → server/src/db.js} +4 -0
- package/dist/server/server/src/debug.js +19 -0
- package/dist/server/{openapi.js → server/src/openapi.js} +2 -2
- package/dist/server/{repositories → server/src/repositories}/ai-connectors.js +286 -23
- package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
- package/dist/server/{repositories → server/src/repositories}/settings.js +51 -3
- package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
- package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
- package/dist/server/{types.js → server/src/types.js} +137 -19
- package/dist/server/{web.js → server/src/web.js} +21 -2
- 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 +1 -1
- package/server/index.js +68 -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 +3 -0
- package/skills/forge-openclaw/entity_conversation_playbooks.md +213 -24
- package/skills/forge-openclaw/psyche_entity_playbooks.md +82 -3
- package/dist/assets/index-CFCKDIMH.js +0 -67
- package/dist/assets/index-CFCKDIMH.js.map +0 -1
- package/dist/assets/index-ZPY6U1TU.css +0 -1
- package/dist/assets/vendor-D9PTEPSB.js +0 -824
- package/dist/assets/vendor-D9PTEPSB.js.map +0 -1
- package/dist/assets/viz-Cqb6s--o.js +0 -34
- package/dist/assets/viz-Cqb6s--o.js.map +0 -1
- package/dist/server/connectors/box-registry.js +0 -257
- /package/dist/server/{demo-data.js → server/src/demo-data.js} +0 -0
- /package/dist/server/{discovery-advertiser.js → server/src/discovery-advertiser.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/{health.js → server/src/health.js} +0 -0
- /package/dist/server/{index.js → server/src/index.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/llm-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/openai-responses-provider.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/{movement.js → server/src/movement.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/{psyche-types.js → server/src/psyche-types.js} +0 -0
- /package/dist/server/{questionnaire-flow.js → server/src/questionnaire-flow.js} +0 -0
- /package/dist/server/{questionnaire-seeds.js → server/src/questionnaire-seeds.js} +0 -0
- /package/dist/server/{questionnaire-types.js → server/src/questionnaire-types.js} +0 -0
- /package/dist/server/{repositories → server/src/repositories}/activity-events.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/ai-processors.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}/entity-ownership.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}/habits.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/model-settings.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/notes.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/preferences.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}/questionnaires.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}/surface-layouts.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}/wiki-memory.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}/entity-crud.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}/openai-codex-oauth.js +0 -0
- /package/dist/server/{services → server/src/services}/projects.js +0 -0
- /package/dist/server/{services → server/src/services}/psyche-observation-calendar.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
- /package/dist/server/{watch-mobile.js → server/src/watch-mobile.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
|
+
}
|