forge-openclaw-plugin 0.2.23 → 0.2.25

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.
Files changed (84) hide show
  1. package/README.md +13 -0
  2. package/dist/assets/{board-_C6oMy5w.js → board-VmF4FAfr.js} +3 -3
  3. package/dist/assets/{board-_C6oMy5w.js.map → board-VmF4FAfr.js.map} +1 -1
  4. package/dist/assets/index-CFCKDIMH.js +67 -0
  5. package/dist/assets/index-CFCKDIMH.js.map +1 -0
  6. package/dist/assets/index-ZPY6U1TU.css +1 -0
  7. package/dist/assets/{motion-D4sZgCHd.js → motion-DvkU14p-.js} +3 -3
  8. package/dist/assets/motion-DvkU14p-.js.map +1 -0
  9. package/dist/assets/{table-BWzTaky1.js → table-DgiPof9E.js} +2 -2
  10. package/dist/assets/{table-BWzTaky1.js.map → table-DgiPof9E.js.map} +1 -1
  11. package/dist/assets/{ui-BzK4azQb.js → ui-nYfoC0Gq.js} +2 -2
  12. package/dist/assets/{ui-BzK4azQb.js.map → ui-nYfoC0Gq.js.map} +1 -1
  13. package/dist/assets/vendor-D9PTEPSB.js +824 -0
  14. package/dist/assets/vendor-D9PTEPSB.js.map +1 -0
  15. package/dist/assets/viz-Cqb6s--o.js +34 -0
  16. package/dist/assets/viz-Cqb6s--o.js.map +1 -0
  17. package/dist/index.html +8 -8
  18. package/dist/openclaw/parity.d.ts +1 -1
  19. package/dist/openclaw/parity.js +29 -0
  20. package/dist/openclaw/plugin-entry-shared.d.ts +1 -0
  21. package/dist/openclaw/plugin-entry-shared.js +7 -4
  22. package/dist/openclaw/plugin-sdk-types.d.ts +12 -0
  23. package/dist/openclaw/routes.js +236 -0
  24. package/dist/openclaw/session-bootstrap.d.ts +78 -0
  25. package/dist/openclaw/session-bootstrap.js +240 -0
  26. package/dist/openclaw/tools.js +279 -3
  27. package/dist/server/app.js +855 -19
  28. package/dist/server/connectors/box-registry.js +257 -0
  29. package/dist/server/db.js +2 -0
  30. package/dist/server/discovery-advertiser.js +114 -0
  31. package/dist/server/health.js +39 -11
  32. package/dist/server/index.js +4 -0
  33. package/dist/server/managers/platform/llm-manager.js +40 -4
  34. package/dist/server/managers/platform/openai-responses-provider.js +129 -19
  35. package/dist/server/movement.js +2935 -0
  36. package/dist/server/openapi.js +628 -5
  37. package/dist/server/psyche-types.js +15 -1
  38. package/dist/server/questionnaire-flow.js +552 -0
  39. package/dist/server/questionnaire-seeds.js +853 -0
  40. package/dist/server/questionnaire-types.js +340 -0
  41. package/dist/server/repositories/ai-connectors.js +944 -0
  42. package/dist/server/repositories/ai-processors.js +547 -0
  43. package/dist/server/repositories/diagnostic-logs.js +57 -4
  44. package/dist/server/repositories/entity-ownership.js +9 -1
  45. package/dist/server/repositories/habits.js +77 -9
  46. package/dist/server/repositories/model-settings.js +216 -0
  47. package/dist/server/repositories/notes.js +57 -15
  48. package/dist/server/repositories/preferences.js +124 -0
  49. package/dist/server/repositories/questionnaires.js +1338 -0
  50. package/dist/server/repositories/rewards.js +2 -2
  51. package/dist/server/repositories/settings.js +108 -12
  52. package/dist/server/repositories/surface-layouts.js +76 -0
  53. package/dist/server/repositories/wiki-memory.js +5 -1
  54. package/dist/server/services/entity-crud.js +81 -2
  55. package/dist/server/services/openai-codex-oauth.js +153 -0
  56. package/dist/server/services/psyche-observation-calendar.js +46 -0
  57. package/dist/server/types.js +492 -3
  58. package/dist/server/watch-mobile.js +562 -0
  59. package/dist/server/web.js +9 -2
  60. package/openclaw.plugin.json +1 -1
  61. package/package.json +6 -1
  62. package/server/migrations/024_questionnaires.sql +96 -0
  63. package/server/migrations/025_ai_model_connections.sql +26 -0
  64. package/server/migrations/026_custom_theme_settings.sql +2 -0
  65. package/server/migrations/027_ai_processors.sql +31 -0
  66. package/server/migrations/028_movement_domain.sql +136 -0
  67. package/server/migrations/029_watch_micro_capture.sql +23 -0
  68. package/server/migrations/030_surface_layouts.sql +5 -0
  69. package/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
  70. package/server/migrations/032_ai_connectors.sql +44 -0
  71. package/server/migrations/033_movement_trip_point_sync.sql +36 -0
  72. package/server/migrations/034_movement_segment_sync.sql +49 -0
  73. package/skills/forge-openclaw/SKILL.md +12 -1
  74. package/skills/forge-openclaw/entity_conversation_playbooks.md +331 -84
  75. package/skills/forge-openclaw/psyche_entity_playbooks.md +252 -221
  76. package/dist/assets/index-Ch_xeZ2u.js +0 -63
  77. package/dist/assets/index-Ch_xeZ2u.js.map +0 -1
  78. package/dist/assets/index-DvVM7K6j.css +0 -1
  79. package/dist/assets/motion-D4sZgCHd.js.map +0 -1
  80. package/dist/assets/vendor-De38P6YR.js +0 -729
  81. package/dist/assets/vendor-De38P6YR.js.map +0 -1
  82. package/dist/assets/viz-C6hfyqzu.js +0 -34
  83. package/dist/assets/viz-C6hfyqzu.js.map +0 -1
  84. package/skills/forge-openclaw/cron_jobs.md +0 -395
@@ -0,0 +1,340 @@
1
+ import { z } from "zod";
2
+ const trimmedString = z.string().trim();
3
+ const nonEmptyTrimmedString = trimmedString.min(1);
4
+ const stringArraySchema = z.array(nonEmptyTrimmedString);
5
+ export const questionnaireSourceClassSchema = z.enum([
6
+ "public_domain",
7
+ "free_use",
8
+ "open_access",
9
+ "open_noncommercial",
10
+ "free_clinician",
11
+ "secondary_verified"
12
+ ]);
13
+ export const questionnaireAvailabilitySchema = z.enum([
14
+ "open",
15
+ "free_clinician",
16
+ "custom"
17
+ ]);
18
+ export const questionnairePresentationModeSchema = z.enum([
19
+ "single_question",
20
+ "batched_likert"
21
+ ]);
22
+ export const questionnaireVersionStatusSchema = z.enum([
23
+ "draft",
24
+ "published",
25
+ "archived"
26
+ ]);
27
+ export const questionnaireInstrumentStatusSchema = z.enum([
28
+ "active",
29
+ "archived"
30
+ ]);
31
+ export const questionnaireRunStatusSchema = z.enum([
32
+ "draft",
33
+ "completed",
34
+ "abandoned"
35
+ ]);
36
+ export const questionnaireComparatorSchema = z.enum([
37
+ "eq",
38
+ "neq",
39
+ "gt",
40
+ "gte",
41
+ "lt",
42
+ "lte"
43
+ ]);
44
+ export const questionnaireScoreValueTypeSchema = z.enum([
45
+ "number",
46
+ "text",
47
+ "boolean",
48
+ "percent"
49
+ ]);
50
+ export const questionnaireMissingModeSchema = z.enum([
51
+ "require_all",
52
+ "allow_partial",
53
+ "min_answered"
54
+ ]);
55
+ export const questionnaireOptionSchema = z.object({
56
+ key: nonEmptyTrimmedString,
57
+ label: nonEmptyTrimmedString,
58
+ value: z.number(),
59
+ description: trimmedString.default("")
60
+ });
61
+ export const questionnaireFlowRuleSchema = z.object({
62
+ script: nonEmptyTrimmedString
63
+ });
64
+ export const questionnaireItemSchema = z.object({
65
+ id: nonEmptyTrimmedString,
66
+ prompt: nonEmptyTrimmedString,
67
+ shortLabel: trimmedString.default(""),
68
+ description: trimmedString.default(""),
69
+ helperText: trimmedString.default(""),
70
+ required: z.boolean().default(true),
71
+ visibility: questionnaireFlowRuleSchema.nullable().default(null),
72
+ options: z.array(questionnaireOptionSchema).min(1),
73
+ tags: stringArraySchema.default([])
74
+ });
75
+ export const questionnaireSectionSchema = z.object({
76
+ id: nonEmptyTrimmedString,
77
+ title: nonEmptyTrimmedString,
78
+ description: trimmedString.default(""),
79
+ visibility: questionnaireFlowRuleSchema.nullable().default(null),
80
+ itemIds: stringArraySchema.min(1)
81
+ });
82
+ export const questionnaireDefinitionSchema = z.object({
83
+ locale: nonEmptyTrimmedString.default("en"),
84
+ instructions: trimmedString.default(""),
85
+ completionNote: trimmedString.default(""),
86
+ presentationMode: questionnairePresentationModeSchema,
87
+ responseStyle: nonEmptyTrimmedString,
88
+ itemIds: stringArraySchema.min(1),
89
+ items: z.array(questionnaireItemSchema).min(1),
90
+ sections: z.array(questionnaireSectionSchema).min(1),
91
+ pageSize: z.number().int().min(1).max(64).nullable().default(null)
92
+ });
93
+ export const questionnaireConstExpressionSchema = z.object({
94
+ kind: z.literal("const"),
95
+ value: z.union([z.number(), z.string(), z.boolean(), z.null()])
96
+ });
97
+ export const questionnaireAnswerExpressionSchema = z.object({
98
+ kind: z.literal("answer"),
99
+ itemId: nonEmptyTrimmedString,
100
+ defaultValue: z.number().nullable().optional()
101
+ });
102
+ export const questionnaireScoreExpressionRefSchema = z.object({
103
+ kind: z.literal("score"),
104
+ scoreKey: nonEmptyTrimmedString
105
+ });
106
+ export const questionnaireScoreExpressionSchema = z.lazy(() => z.union([
107
+ questionnaireConstExpressionSchema,
108
+ questionnaireAnswerExpressionSchema,
109
+ questionnaireScoreExpressionRefSchema,
110
+ z.object({
111
+ kind: z.enum(["add", "multiply", "min", "max"]),
112
+ values: z.array(questionnaireScoreExpressionSchema).min(1)
113
+ }),
114
+ z.object({
115
+ kind: z.enum(["subtract", "divide"]),
116
+ left: questionnaireScoreExpressionSchema,
117
+ right: questionnaireScoreExpressionSchema,
118
+ zeroValue: z.number().nullable().optional()
119
+ }),
120
+ z.object({
121
+ kind: z.enum(["sum", "average"]),
122
+ itemIds: stringArraySchema.min(1)
123
+ }),
124
+ z.object({
125
+ kind: z.literal("weighted_sum"),
126
+ terms: z
127
+ .array(z.object({
128
+ itemId: nonEmptyTrimmedString,
129
+ weight: z.number()
130
+ }))
131
+ .min(1)
132
+ }),
133
+ z.object({
134
+ kind: z.enum(["count_if", "filtered_mean"]),
135
+ itemIds: stringArraySchema.min(1),
136
+ comparator: questionnaireComparatorSchema,
137
+ target: z.number()
138
+ }),
139
+ z.object({
140
+ kind: z.literal("compare"),
141
+ comparator: questionnaireComparatorSchema,
142
+ left: questionnaireScoreExpressionSchema,
143
+ right: questionnaireScoreExpressionSchema
144
+ }),
145
+ z.object({
146
+ kind: z.literal("if"),
147
+ condition: questionnaireScoreExpressionSchema,
148
+ then: questionnaireScoreExpressionSchema,
149
+ else: questionnaireScoreExpressionSchema
150
+ }),
151
+ z.object({
152
+ kind: z.literal("round"),
153
+ value: questionnaireScoreExpressionSchema,
154
+ digits: z.number().int().min(0).max(6)
155
+ })
156
+ ]));
157
+ export const questionnaireMissingPolicySchema = z.object({
158
+ mode: questionnaireMissingModeSchema,
159
+ minAnswered: z.number().int().min(0).nullable().optional()
160
+ });
161
+ export const questionnaireScoreBandSchema = z.object({
162
+ label: nonEmptyTrimmedString,
163
+ min: z.number().nullable().optional(),
164
+ max: z.number().nullable().optional(),
165
+ severity: trimmedString.default("")
166
+ });
167
+ export const questionnaireScoreDefinitionSchema = z.object({
168
+ key: nonEmptyTrimmedString,
169
+ label: nonEmptyTrimmedString,
170
+ description: trimmedString.default(""),
171
+ valueType: questionnaireScoreValueTypeSchema.default("number"),
172
+ expression: questionnaireScoreExpressionSchema,
173
+ dependsOnItemIds: stringArraySchema.default([]),
174
+ missingPolicy: questionnaireMissingPolicySchema
175
+ .default({ mode: "require_all" })
176
+ .optional(),
177
+ bands: z.array(questionnaireScoreBandSchema).default([]),
178
+ roundTo: z.number().int().min(0).max(6).nullable().optional(),
179
+ unitLabel: trimmedString.default("")
180
+ });
181
+ export const questionnaireScoringSchema = z.object({
182
+ scores: z.array(questionnaireScoreDefinitionSchema).min(1)
183
+ });
184
+ export const questionnaireProvenanceSourceSchema = z.object({
185
+ label: nonEmptyTrimmedString,
186
+ url: nonEmptyTrimmedString,
187
+ citation: trimmedString.default(""),
188
+ notes: trimmedString.default("")
189
+ });
190
+ export const questionnaireProvenanceSchema = z.object({
191
+ retrievalDate: nonEmptyTrimmedString,
192
+ sourceClass: questionnaireSourceClassSchema,
193
+ scoringNotes: trimmedString.default(""),
194
+ sources: z.array(questionnaireProvenanceSourceSchema).min(1)
195
+ });
196
+ export const questionnaireVersionSchema = z.object({
197
+ id: z.string(),
198
+ instrumentId: z.string(),
199
+ versionNumber: z.number().int().min(1),
200
+ status: questionnaireVersionStatusSchema,
201
+ label: trimmedString.default(""),
202
+ isReadOnly: z.boolean(),
203
+ definition: questionnaireDefinitionSchema,
204
+ scoring: questionnaireScoringSchema,
205
+ provenance: questionnaireProvenanceSchema,
206
+ createdBy: trimmedString.nullable(),
207
+ createdAt: z.string(),
208
+ updatedAt: z.string(),
209
+ publishedAt: z.string().nullable()
210
+ });
211
+ export const questionnaireHistoryPointSchema = z.object({
212
+ runId: z.string(),
213
+ completedAt: z.string(),
214
+ primaryScore: z.number().nullable(),
215
+ primaryScoreLabel: trimmedString.default(""),
216
+ bandLabel: trimmedString.default("")
217
+ });
218
+ export const questionnaireInstrumentSummarySchema = z.object({
219
+ id: z.string(),
220
+ key: nonEmptyTrimmedString,
221
+ slug: nonEmptyTrimmedString,
222
+ title: nonEmptyTrimmedString,
223
+ subtitle: trimmedString.default(""),
224
+ description: trimmedString.default(""),
225
+ aliases: stringArraySchema.default([]),
226
+ symptomDomains: stringArraySchema.default([]),
227
+ tags: stringArraySchema.default([]),
228
+ sourceClass: questionnaireSourceClassSchema,
229
+ availability: questionnaireAvailabilitySchema,
230
+ responseStyle: nonEmptyTrimmedString,
231
+ presentationMode: questionnairePresentationModeSchema,
232
+ itemCount: z.number().int().min(0),
233
+ isSelfReport: z.boolean(),
234
+ isSystem: z.boolean(),
235
+ isReadOnly: z.boolean(),
236
+ ownerUserId: trimmedString.nullable(),
237
+ currentVersionId: z.string().nullable(),
238
+ currentVersionNumber: z.number().int().min(1).nullable(),
239
+ latestRunId: z.string().nullable(),
240
+ latestRunAt: z.string().nullable(),
241
+ completedRunCount: z.number().int().min(0),
242
+ primarySourceUrl: trimmedString.default(""),
243
+ createdAt: z.string(),
244
+ updatedAt: z.string()
245
+ });
246
+ export const questionnaireInstrumentDetailSchema = questionnaireInstrumentSummarySchema.extend({
247
+ status: questionnaireInstrumentStatusSchema,
248
+ currentVersion: questionnaireVersionSchema.nullable(),
249
+ draftVersion: questionnaireVersionSchema.nullable(),
250
+ versions: z.array(questionnaireVersionSchema),
251
+ history: z.array(questionnaireHistoryPointSchema),
252
+ latestDraftRunId: z.string().nullable()
253
+ });
254
+ export const questionnaireAnswerSchema = z.object({
255
+ itemId: nonEmptyTrimmedString,
256
+ optionKey: trimmedString.nullable(),
257
+ valueText: trimmedString.default(""),
258
+ numericValue: z.number().nullable(),
259
+ answer: z.record(z.string(), z.unknown()).default({}),
260
+ createdAt: z.string(),
261
+ updatedAt: z.string()
262
+ });
263
+ export const questionnaireRunScoreSchema = z.object({
264
+ scoreKey: nonEmptyTrimmedString,
265
+ label: nonEmptyTrimmedString,
266
+ valueNumeric: z.number().nullable(),
267
+ valueText: trimmedString.nullable(),
268
+ bandLabel: trimmedString.default(""),
269
+ severity: trimmedString.default(""),
270
+ details: z.record(z.string(), z.unknown()).default({}),
271
+ createdAt: z.string()
272
+ });
273
+ export const questionnaireRunSchema = z.object({
274
+ id: z.string(),
275
+ instrumentId: z.string(),
276
+ versionId: z.string(),
277
+ userId: trimmedString.nullable(),
278
+ status: questionnaireRunStatusSchema,
279
+ startedAt: z.string(),
280
+ updatedAt: z.string(),
281
+ completedAt: z.string().nullable(),
282
+ progressIndex: z.number().int().min(0)
283
+ });
284
+ export const questionnaireRunDetailSchema = z.object({
285
+ run: questionnaireRunSchema,
286
+ instrument: questionnaireInstrumentSummarySchema,
287
+ version: questionnaireVersionSchema,
288
+ answers: z.array(questionnaireAnswerSchema),
289
+ scores: z.array(questionnaireRunScoreSchema),
290
+ history: z.array(questionnaireHistoryPointSchema)
291
+ });
292
+ export const questionnaireAnswerInputSchema = z.object({
293
+ itemId: nonEmptyTrimmedString,
294
+ optionKey: trimmedString.nullable().optional(),
295
+ valueText: trimmedString.default(""),
296
+ numericValue: z.number().nullable().optional(),
297
+ answer: z.record(z.string(), z.unknown()).default({})
298
+ });
299
+ export const startQuestionnaireRunSchema = z.object({
300
+ versionId: z.string().trim().min(1).nullable().optional(),
301
+ userId: z.string().trim().min(1).nullable().optional()
302
+ });
303
+ export const updateQuestionnaireRunSchema = z.object({
304
+ answers: z.array(questionnaireAnswerInputSchema).default([]),
305
+ progressIndex: z.number().int().min(0).nullable().optional()
306
+ });
307
+ export const createQuestionnaireInstrumentSchema = z.object({
308
+ title: nonEmptyTrimmedString,
309
+ subtitle: trimmedString.default(""),
310
+ description: trimmedString.default(""),
311
+ aliases: stringArraySchema.default([]),
312
+ symptomDomains: stringArraySchema.default([]),
313
+ tags: stringArraySchema.default([]),
314
+ sourceClass: questionnaireSourceClassSchema.default("secondary_verified"),
315
+ availability: questionnaireAvailabilitySchema.default("custom"),
316
+ isSelfReport: z.boolean().default(true),
317
+ userId: z.string().trim().min(1).nullable().optional(),
318
+ versionLabel: trimmedString.default("Draft 1"),
319
+ definition: questionnaireDefinitionSchema,
320
+ scoring: questionnaireScoringSchema,
321
+ provenance: questionnaireProvenanceSchema
322
+ });
323
+ export const updateQuestionnaireVersionSchema = z.object({
324
+ title: nonEmptyTrimmedString,
325
+ subtitle: trimmedString.default(""),
326
+ description: trimmedString.default(""),
327
+ aliases: stringArraySchema.default([]),
328
+ symptomDomains: stringArraySchema.default([]),
329
+ tags: stringArraySchema.default([]),
330
+ sourceClass: questionnaireSourceClassSchema,
331
+ availability: questionnaireAvailabilitySchema,
332
+ isSelfReport: z.boolean(),
333
+ label: trimmedString.default(""),
334
+ definition: questionnaireDefinitionSchema,
335
+ scoring: questionnaireScoringSchema,
336
+ provenance: questionnaireProvenanceSchema
337
+ });
338
+ export const publishQuestionnaireVersionSchema = z.object({
339
+ label: trimmedString.default("")
340
+ });