@useorgx/openclaw-plugin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-handler.js","sourceRoot":"","sources":["../src/http-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * OrgX Clawdbot Plugin — Main Entry Point
3
+ *
4
+ * This is the canonical entry point for the OrgX plugin.
5
+ * It exports the plugin interface for Clawdbot consumption.
6
+ *
7
+ * Registers:
8
+ * - Background sync service ("orgx-sync")
9
+ * - MCP Tools (orgx_status, orgx_sync, orgx_spawn_check, etc.)
10
+ * - CLI command ("orgx" with status/sync subcommands)
11
+ * - HTTP handler for dashboard + API proxy
12
+ */
13
+ import type { OrgXConfig } from "./types.js";
14
+ export type { OrgXConfig, OrgSnapshot } from "./types.js";
15
+ export { OrgXClient } from "./api.js";
16
+ export interface PluginAPI {
17
+ config?: {
18
+ plugins?: {
19
+ entries?: {
20
+ orgx?: {
21
+ config?: Partial<OrgXConfig & {
22
+ dashboardEnabled: boolean;
23
+ }>;
24
+ };
25
+ };
26
+ };
27
+ };
28
+ log?: {
29
+ info?: (msg: string, meta?: Record<string, unknown>) => void;
30
+ warn?: (msg: string, meta?: Record<string, unknown>) => void;
31
+ debug?: (msg: string, meta?: Record<string, unknown>) => void;
32
+ };
33
+ registerService: (service: {
34
+ id: string;
35
+ start: () => Promise<void>;
36
+ stop: () => Promise<void>;
37
+ }) => void;
38
+ registerTool: (tool: {
39
+ name: string;
40
+ description: string;
41
+ parameters: Record<string, unknown>;
42
+ execute: (callId: string, params?: any) => Promise<ToolResult>;
43
+ }, options?: {
44
+ optional?: boolean;
45
+ }) => void;
46
+ registerCli: (fn: (ctx: {
47
+ program: any;
48
+ }) => void, options?: {
49
+ commands?: string[];
50
+ }) => void;
51
+ registerHttpHandler: (handler: unknown) => void;
52
+ }
53
+ export interface ToolResult {
54
+ content: Array<{
55
+ type: "text";
56
+ text: string;
57
+ }>;
58
+ }
59
+ /**
60
+ * Plugin registration function.
61
+ * Called by Clawdbot when the plugin is loaded.
62
+ *
63
+ * @param api - The Clawdbot plugin API
64
+ */
65
+ export default function register(api: PluginAPI): void;
66
+ export { register };
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AAO1D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAMtC,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,EAAE;oBACL,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG;wBAAE,gBAAgB,EAAE,OAAO,CAAA;qBAAE,CAAC,CAAC;iBAC9D,CAAC;aACH,CAAC;SACH,CAAC;KACH,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC7D,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAC/D,CAAC;IACF,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KAC3B,KAAK,IAAI,CAAC;IAEX,YAAY,EAAE,CACZ,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEpC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;KAChE,EACD,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAC7B,IAAI,CAAC;IAEV,WAAW,EAAE,CACX,EAAE,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,EACnC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAC9B,IAAI,CAAC;IACV,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAgHD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAobrD;AAMD,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,459 @@
1
+ /**
2
+ * OrgX Clawdbot Plugin — Main Entry Point
3
+ *
4
+ * This is the canonical entry point for the OrgX plugin.
5
+ * It exports the plugin interface for Clawdbot consumption.
6
+ *
7
+ * Registers:
8
+ * - Background sync service ("orgx-sync")
9
+ * - MCP Tools (orgx_status, orgx_sync, orgx_spawn_check, etc.)
10
+ * - CLI command ("orgx" with status/sync subcommands)
11
+ * - HTTP handler for dashboard + API proxy
12
+ */
13
+ import { OrgXClient } from "./api.js";
14
+ import { createHttpHandler } from "./http-handler.js";
15
+ import { readFileSync } from "node:fs";
16
+ import { join } from "node:path";
17
+ import { homedir } from "node:os";
18
+ export { OrgXClient } from "./api.js";
19
+ // =============================================================================
20
+ // HELPERS
21
+ // =============================================================================
22
+ function resolveConfig(api) {
23
+ const pluginConf = api.config?.plugins?.entries?.orgx?.config ?? {};
24
+ let apiKey = pluginConf.apiKey || process.env.ORGX_API_KEY || "";
25
+ if (!apiKey) {
26
+ try {
27
+ const envPath = join(homedir(), "Code", "orgx", "orgx", ".env.local");
28
+ const envContent = readFileSync(envPath, "utf-8");
29
+ const match = envContent.match(/^ORGX_(?:API_KEY|SERVICE_KEY)=["']?([^"'\n]+)["']?$/m);
30
+ if (match)
31
+ apiKey = match[1].trim();
32
+ }
33
+ catch {
34
+ // .env.local not found
35
+ }
36
+ }
37
+ // Resolve user ID for X-Orgx-User-Id header
38
+ let userId = pluginConf.userId || process.env.ORGX_USER_ID || "";
39
+ if (!userId) {
40
+ try {
41
+ const envPath = join(homedir(), "Code", "orgx", "orgx", ".env.local");
42
+ const envContent = readFileSync(envPath, "utf-8");
43
+ const match = envContent.match(/^ORGX_USER_ID=["']?([^"'\n]+)["']?$/m);
44
+ if (match)
45
+ userId = match[1].trim();
46
+ }
47
+ catch {
48
+ // .env.local not found
49
+ }
50
+ }
51
+ return {
52
+ apiKey,
53
+ userId,
54
+ baseUrl: pluginConf.baseUrl ||
55
+ process.env.ORGX_BASE_URL ||
56
+ "https://www.useorgx.com",
57
+ syncIntervalMs: pluginConf.syncIntervalMs ?? 300_000,
58
+ enabled: pluginConf.enabled ?? true,
59
+ dashboardEnabled: pluginConf.dashboardEnabled ?? true,
60
+ };
61
+ }
62
+ function text(s) {
63
+ return { content: [{ type: "text", text: s }] };
64
+ }
65
+ function json(label, data) {
66
+ return text(`${label}\n\`\`\`json\n${JSON.stringify(data, null, 2)}\n\`\`\``);
67
+ }
68
+ function formatSnapshot(snap) {
69
+ const lines = ["# OrgX Status\n"];
70
+ if (snap.initiatives?.length) {
71
+ lines.push("## Initiatives");
72
+ for (const init of snap.initiatives) {
73
+ const pct = init.progress != null ? ` (${init.progress}%)` : "";
74
+ lines.push(`- **${init.title}** — ${init.status}${pct}`);
75
+ }
76
+ lines.push("");
77
+ }
78
+ if (snap.agents?.length) {
79
+ lines.push("## Agents");
80
+ for (const a of snap.agents) {
81
+ const task = a.currentTask ? ` → ${a.currentTask}` : "";
82
+ lines.push(`- **${a.name}** [${a.domain}]: ${a.status}${task}`);
83
+ }
84
+ lines.push("");
85
+ }
86
+ if (snap.activeTasks?.length) {
87
+ lines.push("## Active Tasks");
88
+ for (const t of snap.activeTasks) {
89
+ const tier = t.modelTier ? ` (${t.modelTier})` : "";
90
+ lines.push(`- ${t.title} — ${t.status}${tier}`);
91
+ }
92
+ lines.push("");
93
+ }
94
+ if (snap.pendingDecisions?.length) {
95
+ lines.push("## Pending Decisions");
96
+ for (const d of snap.pendingDecisions) {
97
+ lines.push(`- [${d.urgency.toUpperCase()}] ${d.title}`);
98
+ }
99
+ lines.push("");
100
+ }
101
+ if (snap.syncedAt)
102
+ lines.push(`_Last synced: ${snap.syncedAt}_`);
103
+ return lines.join("\n");
104
+ }
105
+ // =============================================================================
106
+ // PLUGIN STATE
107
+ // =============================================================================
108
+ let cachedSnapshot = null;
109
+ let lastSnapshotAt = 0;
110
+ // =============================================================================
111
+ // PLUGIN ENTRY — DEFAULT EXPORT
112
+ // =============================================================================
113
+ /**
114
+ * Plugin registration function.
115
+ * Called by Clawdbot when the plugin is loaded.
116
+ *
117
+ * @param api - The Clawdbot plugin API
118
+ */
119
+ export default function register(api) {
120
+ const config = resolveConfig(api);
121
+ if (!config.enabled) {
122
+ api.log?.info?.("[orgx] Plugin disabled");
123
+ return;
124
+ }
125
+ if (!config.apiKey) {
126
+ api.log?.warn?.("[orgx] No API key. Set plugins.entries.orgx.config.apiKey, ORGX_API_KEY env, or ~/Code/orgx/orgx/.env.local");
127
+ }
128
+ const client = new OrgXClient(config.apiKey, config.baseUrl, config.userId);
129
+ // ---------------------------------------------------------------------------
130
+ // 1. Background Sync Service
131
+ // ---------------------------------------------------------------------------
132
+ let syncTimer = null;
133
+ async function doSync() {
134
+ try {
135
+ cachedSnapshot = await client.getOrgSnapshot();
136
+ lastSnapshotAt = Date.now();
137
+ api.log?.debug?.("[orgx] Sync OK");
138
+ }
139
+ catch (err) {
140
+ api.log?.warn?.(`[orgx] Sync failed: ${err instanceof Error ? err.message : err}`);
141
+ }
142
+ }
143
+ api.registerService({
144
+ id: "orgx-sync",
145
+ start: async () => {
146
+ api.log?.info?.("[orgx] Starting sync service", {
147
+ interval: config.syncIntervalMs,
148
+ });
149
+ await doSync();
150
+ syncTimer = setInterval(doSync, config.syncIntervalMs);
151
+ },
152
+ stop: async () => {
153
+ if (syncTimer)
154
+ clearInterval(syncTimer);
155
+ syncTimer = null;
156
+ },
157
+ });
158
+ // ---------------------------------------------------------------------------
159
+ // 2. MCP Tools (Model Context Protocol compatible)
160
+ // ---------------------------------------------------------------------------
161
+ // --- orgx_status ---
162
+ api.registerTool({
163
+ name: "orgx_status",
164
+ description: "Get current OrgX org status: active initiatives, agent states, pending decisions, active tasks.",
165
+ parameters: {
166
+ type: "object",
167
+ properties: {},
168
+ additionalProperties: false,
169
+ },
170
+ async execute(_callId) {
171
+ if (!cachedSnapshot ||
172
+ Date.now() - lastSnapshotAt > config.syncIntervalMs) {
173
+ await doSync();
174
+ }
175
+ if (!cachedSnapshot) {
176
+ return text("❌ Failed to fetch OrgX status. Check API key and connectivity.");
177
+ }
178
+ return text(formatSnapshot(cachedSnapshot));
179
+ },
180
+ }, { optional: true });
181
+ // --- orgx_sync ---
182
+ api.registerTool({
183
+ name: "orgx_sync",
184
+ description: "Push/pull memory sync with OrgX. Send local memory/daily log; receive initiatives, tasks, decisions, model routing policy.",
185
+ parameters: {
186
+ type: "object",
187
+ properties: {
188
+ memory: {
189
+ type: "string",
190
+ description: "Local memory snapshot to push",
191
+ },
192
+ dailyLog: {
193
+ type: "string",
194
+ description: "Today's session log to push",
195
+ },
196
+ },
197
+ },
198
+ async execute(_callId, params = {}) {
199
+ try {
200
+ const resp = await client.syncMemory({
201
+ memory: params.memory,
202
+ dailyLog: params.dailyLog,
203
+ });
204
+ return json("Sync complete:", resp);
205
+ }
206
+ catch (err) {
207
+ return text(`❌ Sync failed: ${err instanceof Error ? err.message : err}`);
208
+ }
209
+ },
210
+ }, { optional: true });
211
+ // --- orgx_spawn_check ---
212
+ api.registerTool({
213
+ name: "orgx_spawn_check",
214
+ description: "Check quality gate + get model routing before spawning a sub-agent. Returns allowed/denied, model tier, and check details.",
215
+ parameters: {
216
+ type: "object",
217
+ properties: {
218
+ domain: {
219
+ type: "string",
220
+ description: "Agent domain (engineering, product, marketing, data, operations, design)",
221
+ },
222
+ taskId: {
223
+ type: "string",
224
+ description: "OrgX task ID to check",
225
+ },
226
+ },
227
+ required: ["domain"],
228
+ },
229
+ async execute(_callId, params = { domain: "" }) {
230
+ try {
231
+ const result = await client.checkSpawnGuard(params.domain, params.taskId);
232
+ const status = result.allowed ? "✅ Allowed" : "🚫 Blocked";
233
+ return json(`${status} — model tier: ${result.modelTier}`, result);
234
+ }
235
+ catch (err) {
236
+ return text(`❌ Spawn check failed: ${err instanceof Error ? err.message : err}`);
237
+ }
238
+ },
239
+ }, { optional: true });
240
+ // --- orgx_quality_score ---
241
+ api.registerTool({
242
+ name: "orgx_quality_score",
243
+ description: "Record a quality score (1-5) for completed agent work. Used to gate future spawns and track performance.",
244
+ parameters: {
245
+ type: "object",
246
+ properties: {
247
+ taskId: {
248
+ type: "string",
249
+ description: "ID of the completed task",
250
+ },
251
+ domain: {
252
+ type: "string",
253
+ description: "Agent domain that did the work",
254
+ },
255
+ score: {
256
+ type: "number",
257
+ description: "Quality 1 (poor) to 5 (excellent)",
258
+ minimum: 1,
259
+ maximum: 5,
260
+ },
261
+ notes: {
262
+ type: "string",
263
+ description: "Notes on the assessment",
264
+ },
265
+ },
266
+ required: ["taskId", "domain", "score"],
267
+ },
268
+ async execute(_callId, params = { taskId: "", domain: "", score: 0 }) {
269
+ try {
270
+ await client.recordQuality(params);
271
+ return text(`✅ Quality score recorded: ${params.score}/5 for task ${params.taskId} (${params.domain})`);
272
+ }
273
+ catch (err) {
274
+ return text(`❌ Quality recording failed: ${err instanceof Error ? err.message : err}`);
275
+ }
276
+ },
277
+ }, { optional: true });
278
+ // --- orgx_create_entity ---
279
+ api.registerTool({
280
+ name: "orgx_create_entity",
281
+ description: "Create an OrgX entity (initiative, workstream, task, decision, milestone, etc.).",
282
+ parameters: {
283
+ type: "object",
284
+ properties: {
285
+ type: {
286
+ type: "string",
287
+ description: "Entity type: initiative, workstream, task, decision, milestone, artifact, agent, blocker",
288
+ },
289
+ title: {
290
+ type: "string",
291
+ description: "Entity title",
292
+ },
293
+ summary: {
294
+ type: "string",
295
+ description: "Description",
296
+ },
297
+ status: {
298
+ type: "string",
299
+ description: "Initial status (active, not_started, todo)",
300
+ },
301
+ initiative_id: {
302
+ type: "string",
303
+ description: "Parent initiative ID (for workstreams/tasks)",
304
+ },
305
+ workstream_id: {
306
+ type: "string",
307
+ description: "Parent workstream ID (for tasks)",
308
+ },
309
+ command_center_id: {
310
+ type: "string",
311
+ description: "Command center ID (for initiatives)",
312
+ },
313
+ },
314
+ required: ["type", "title"],
315
+ },
316
+ async execute(_callId, params = {}) {
317
+ try {
318
+ const { type, ...data } = params;
319
+ const entity = await client.createEntity(type, data);
320
+ return json(`✅ Created ${type}: ${entity.title ?? entity.id}`, entity);
321
+ }
322
+ catch (err) {
323
+ return text(`❌ Creation failed: ${err instanceof Error ? err.message : err}`);
324
+ }
325
+ },
326
+ }, { optional: true });
327
+ // --- orgx_update_entity ---
328
+ api.registerTool({
329
+ name: "orgx_update_entity",
330
+ description: "Update an existing OrgX entity by type and ID.",
331
+ parameters: {
332
+ type: "object",
333
+ properties: {
334
+ type: {
335
+ type: "string",
336
+ description: "Entity type",
337
+ },
338
+ id: {
339
+ type: "string",
340
+ description: "Entity UUID",
341
+ },
342
+ status: {
343
+ type: "string",
344
+ description: "New status",
345
+ },
346
+ title: {
347
+ type: "string",
348
+ description: "New title",
349
+ },
350
+ summary: {
351
+ type: "string",
352
+ description: "New summary",
353
+ },
354
+ },
355
+ required: ["type", "id"],
356
+ },
357
+ async execute(_callId, params = {}) {
358
+ try {
359
+ const { type, id, ...updates } = params;
360
+ const entity = await client.updateEntity(type, id, updates);
361
+ return json(`✅ Updated ${type} ${id.slice(0, 8)}`, entity);
362
+ }
363
+ catch (err) {
364
+ return text(`❌ Update failed: ${err instanceof Error ? err.message : err}`);
365
+ }
366
+ },
367
+ }, { optional: true });
368
+ // --- orgx_list_entities ---
369
+ api.registerTool({
370
+ name: "orgx_list_entities",
371
+ description: "List OrgX entities of a given type with optional status filter.",
372
+ parameters: {
373
+ type: "object",
374
+ properties: {
375
+ type: {
376
+ type: "string",
377
+ description: "Entity type: initiative, workstream, task, decision, agent",
378
+ },
379
+ status: {
380
+ type: "string",
381
+ description: "Filter by status",
382
+ },
383
+ limit: {
384
+ type: "number",
385
+ description: "Max results (default 20)",
386
+ default: 20,
387
+ },
388
+ },
389
+ required: ["type"],
390
+ },
391
+ async execute(_callId, params = { type: "" }) {
392
+ try {
393
+ const { type, ...filters } = params;
394
+ const resp = await client.listEntities(type, filters);
395
+ const entities = resp.data ?? resp;
396
+ const count = Array.isArray(entities) ? entities.length : "?";
397
+ return json(`${count} ${type}(s):`, entities);
398
+ }
399
+ catch (err) {
400
+ return text(`❌ List failed: ${err instanceof Error ? err.message : err}`);
401
+ }
402
+ },
403
+ }, { optional: true });
404
+ // ---------------------------------------------------------------------------
405
+ // 3. CLI Command
406
+ // ---------------------------------------------------------------------------
407
+ api.registerCli(({ program }) => {
408
+ const cmd = program.command("orgx").description("OrgX integration commands");
409
+ cmd
410
+ .command("status")
411
+ .description("Show current OrgX org status")
412
+ .action(async () => {
413
+ try {
414
+ const snap = await client.getOrgSnapshot();
415
+ console.log(formatSnapshot(snap));
416
+ }
417
+ catch (err) {
418
+ console.error(`Error: ${err instanceof Error ? err.message : err}`);
419
+ process.exit(1);
420
+ }
421
+ });
422
+ cmd
423
+ .command("sync")
424
+ .description("Trigger manual memory sync")
425
+ .option("--memory <text>", "Memory to push")
426
+ .option("--daily-log <text>", "Daily log to push")
427
+ .action(async (opts = {}) => {
428
+ try {
429
+ const resp = await client.syncMemory({
430
+ memory: opts.memory,
431
+ dailyLog: opts.dailyLog,
432
+ });
433
+ console.log("Sync complete:");
434
+ console.log(` Initiatives: ${resp.initiatives?.length ?? 0}`);
435
+ console.log(` Active tasks: ${resp.activeTasks?.length ?? 0}`);
436
+ console.log(` Pending decisions: ${resp.pendingDecisions?.length ?? 0}`);
437
+ }
438
+ catch (err) {
439
+ console.error(`Sync failed: ${err instanceof Error ? err.message : err}`);
440
+ process.exit(1);
441
+ }
442
+ });
443
+ }, { commands: ["orgx"] });
444
+ // ---------------------------------------------------------------------------
445
+ // 4. HTTP Handler — Dashboard + API proxy
446
+ // ---------------------------------------------------------------------------
447
+ const httpHandler = createHttpHandler(config, client, () => cachedSnapshot);
448
+ api.registerHttpHandler(httpHandler);
449
+ api.log?.info?.("[orgx] Plugin registered", {
450
+ baseUrl: config.baseUrl,
451
+ hasApiKey: !!config.apiKey,
452
+ dashboardEnabled: config.dashboardEnabled,
453
+ });
454
+ }
455
+ // =============================================================================
456
+ // NAMED EXPORT FOR FLEXIBILITY
457
+ // =============================================================================
458
+ export { register };
459
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}