@kb-labs/steward-entry 2.119.0-canary.e120bc0ee → 2.119.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.
- package/dist/commands/commitment-add.js.map +1 -1
- package/dist/commands/commitment-done.js.map +1 -1
- package/dist/commands/commitment-drop.js.map +1 -1
- package/dist/commands/commitment-list.js.map +1 -1
- package/dist/commands/commitment-snooze.js.map +1 -1
- package/dist/commands/company-add.js.map +1 -1
- package/dist/commands/company-list.js.map +1 -1
- package/dist/commands/event-add.js.map +1 -1
- package/dist/commands/event-list.js.map +1 -1
- package/dist/commands/member-add.js.map +1 -1
- package/dist/commands/member-list.js.map +1 -1
- package/dist/commands/person-add.js.map +1 -1
- package/dist/commands/person-get.js.map +1 -1
- package/dist/commands/person-list.js.map +1 -1
- package/dist/commands/person-update.js.map +1 -1
- package/dist/commands/project-add.js.map +1 -1
- package/dist/commands/project-get.js.map +1 -1
- package/dist/commands/project-list.js.map +1 -1
- package/dist/commands/project-update.js.map +1 -1
- package/dist/commands/resource-add.js.map +1 -1
- package/dist/commands/resource-list.js.map +1 -1
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/topic-add.js.map +1 -1
- package/dist/commands/topic-list.js.map +1 -1
- package/dist/commands/who.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/jobs/daily-review.js.map +1 -1
- package/dist/jobs/export-backup.js.map +1 -1
- package/dist/manifest.js.map +1 -1
- package/package.json +6 -6
- package/dist/manifest.json +0 -728
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/utils/flags.ts","../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/commitment-add.ts"],"names":[],"mappings":";;;;;;AAUO,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC3B,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,EAAE,CAAA,EAAG;AACpB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,KAAK,CAAA,4CAAA,CAAyC,CAAA;AAAA,EAClF;AACA,EAAA,OAAO,EAAA;AACT;;;ACHA,IAAO,yBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,wBAAA;AAAA,EACJ,WAAA,EAAa,wEAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,KAAS,KAAA,CAAM,KAAA;AAC9C,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,KAAA,CAAM,WAAW,CAAA;AAC3C,MAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,KAAA,CAAM,kBAAkB,CAAA;AACrD,MAAA,IAAI,CAAC,IAAA,EAAM,IAAA,EAAK,EAAG;AACjB,QAAA,eAAA,CAAgB,GAAA,EAAK,oBAAA,EAAsB,MAAA,EAAW,IAAI,CAAA;AAC1D,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,UAAA,GAAa,MAAM,aAAA,CAAc;AAAA,UACrC,IAAA;AAAA,UACA,QAAA,EAAU,MAAA;AAAA,UACV,SAAA,EAAW,OAAA;AAAA,UACX,QAAA,EAAU,WAAA,GAAc,SAAA,CAAU,WAAW,CAAA,GAAI,KAAA,CAAA;AAAA,UACjD,cAAA,EAAgB,cAAA,KAAmB,KAAA,CAAA,GAAY,MAAA,CAAO,cAAc,CAAA,GAAI;AAAA,SACzE,CAAA;AACD,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,YAAY,CAAA;AAAA,QAAE,CAAA,MACvD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA,qBAAA,EAAwB,UAAA,CAAW,IAAI,CAAA,GAAA,EAAM,UAAA,CAAW,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AACpF,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAW;AAAA,MACxC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,+BAAA,EAAiC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AACjH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"commitment-add.js","sourcesContent":["/** Parses a `--flag=a,b,c` value into a trimmed string list. */\nexport function parseList(csv?: string): string[] | undefined {\n if (csv === undefined) {return undefined;}\n return csv\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/** Parses an ISO date/time flag into epoch milliseconds. Throws on garbage input. */\nexport function parseDate(value: string): number {\n const ms = Date.parse(value);\n if (Number.isNaN(ms)) {\n throw new Error(`Invalid date: \"${value}\" — expected ISO 8601 (e.g. 2026-09-01)`);\n }\n return ms;\n}\n","import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addCommitment } from '@kb-labs/steward-core';\nimport { parseDate } from '../utils/flags.js';\n\ntype Flags = {\n text?: string;\n person?: string;\n project?: string;\n 'remind-at'?: string;\n 'stale-after-days'?: number;\n json?: boolean;\n};\n\nexport default defineCommand({\n id: 'steward:commitment.add',\n description: 'Record a promise made to a person, with an optional soft reminder date',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { text, person, project, json } = input.flags;\n const remindAtRaw = input.flags['remind-at'];\n const staleAfterDays = input.flags['stale-after-days'];\n if (!text?.trim()) {\n validationError(ctx, '--text is required', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const commitment = await addCommitment({\n text,\n personId: person,\n projectId: project,\n remindAt: remindAtRaw ? parseDate(remindAtRaw) : undefined,\n staleAfterDays: staleAfterDays !== undefined ? Number(staleAfterDays) : 14,\n });\n if (json) {ctx.ui?.json?.({ ok: true, result: commitment });}\n else {ctx.ui?.info?.(`Recorded commitment \"${commitment.text}\" (${commitment.id})`);}\n return { ok: true, result: commitment };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:commitment.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/commitment-done.ts"],"names":[],"mappings":";;;;AAKA,IAAO,0BAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,yBAAA;AAAA,EACJ,WAAA,EAAa,6BAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,EAAE,CAAA,GAAI,KAAA,CAAM,IAAA;AACnB,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI,CAAC,EAAA,EAAI;AACP,QAAA,eAAA,CAAgB,GAAA,EAAK,gBAAA,EAAkB,wCAAA,EAA0C,IAAI,CAAA;AACrF,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,UAAA,GAAa,MAAM,cAAA,CAAe,EAAE,IAAI,CAAA;AAC9C,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,IAAI,IAAA,EAAM;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAA,CAAA,IAAO,CAAA;AAAA,UAAE,CAAA,MACpG;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,UAAE;AAC/C,UAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,QAAQ,IAAA,EAAK;AAAA,QACvD;AACA,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,YAAY,CAAA;AAAA,QAAE,CAAA,MACvD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,OAAA,EAAU,UAAA,CAAW,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AACnD,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAW;AAAA,MACxC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,gCAAA,EAAkC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAClH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"commitment-done.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { commitmentDone } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:commitment.done',\n description: 'Mark a commitment fulfilled',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [id] = input.argv;\n const { json } = input.flags;\n if (!id) {\n validationError(ctx, 'id is required', 'Usage: kb steward commitment done <id>', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const commitment = await commitmentDone({ id });\n if (!commitment) {\n if (json) {ctx.ui?.json?.({ ok: false, error: { code: 'NOT_FOUND', message: `No commitment \"${id}\"` } });}\n else {ctx.ui?.error?.(`No commitment \"${id}\"`);}\n return { ok: false, error: 'NOT_FOUND', result: null };\n }\n if (json) {ctx.ui?.json?.({ ok: true, result: commitment });}\n else {ctx.ui?.info?.(`Done: \"${commitment.text}\"`);}\n return { ok: true, result: commitment };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:commitment.done failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/commitment-drop.ts"],"names":[],"mappings":";;;;AAKA,IAAO,0BAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,yBAAA;AAAA,EACJ,WAAA,EAAa,uEAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,EAAE,CAAA,GAAI,KAAA,CAAM,IAAA;AACnB,MAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AAC/B,MAAA,IAAI,CAAC,EAAA,IAAM,CAAC,MAAA,EAAQ,MAAK,EAAG;AAC1B,QAAA,eAAA,CAAgB,GAAA,EAAK,8BAAA,EAAgC,qDAAA,EAAuD,IAAI,CAAA;AAChH,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,aAAa,MAAM,cAAA,CAAe,EAAE,EAAA,EAAI,QAAQ,CAAA;AACtD,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,IAAI,IAAA,EAAM;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAA,CAAA,IAAO,CAAA;AAAA,UAAE,CAAA,MACpG;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,UAAE;AAC/C,UAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,QAAQ,IAAA,EAAK;AAAA,QACvD;AACA,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,YAAY,CAAA;AAAA,QAAE,CAAA,MACvD;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,CAAA,UAAA,EAAa,WAAW,IAAI,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AAClE,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAW;AAAA,MACxC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,gCAAA,EAAkC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAClH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"commitment-drop.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { commitmentDrop } from '@kb-labs/steward-core';\n\ntype Flags = { reason?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:commitment.drop',\n description: 'Cancel a commitment — reason is required and recorded in history',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [id] = input.argv;\n const { reason, json } = input.flags;\n if (!id || !reason?.trim()) {\n validationError(ctx, 'id and --reason are required', 'Usage: kb steward commitment drop <id> --reason=...', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const commitment = await commitmentDrop({ id, reason });\n if (!commitment) {\n if (json) {ctx.ui?.json?.({ ok: false, error: { code: 'NOT_FOUND', message: `No commitment \"${id}\"` } });}\n else {ctx.ui?.error?.(`No commitment \"${id}\"`);}\n return { ok: false, error: 'NOT_FOUND', result: null };\n }\n if (json) {ctx.ui?.json?.({ ok: true, result: commitment });}\n else {ctx.ui?.info?.(`Dropped: \"${commitment.text}\" (${reason})`);}\n return { ok: true, result: commitment };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:commitment.drop failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/commitment-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,0BAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,yBAAA;AAAA,EACJ,WAAA,EAAa,uEAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,IAAA,KAAS,KAAA,CAAM,KAAA;AACxC,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA,IAAK,KAAA;AAC/C,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAAc,MAAM,eAAA,CAAgB;AAAA,UACxC,MAAA;AAAA,UACA,SAAA,EAAW,OAAA;AAAA,UACX;AAAA,SACD,CAAA;AACD,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,aAAa,CAAA;AAAA,QAAE,CAAA,MAAA,IACpD,WAAA,CAAY,MAAA,KAAW,CAAA,EAAG;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,eAAe,CAAA;AAAA,QAAE,CAAA,MAC/D;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,KAAA,EAAO,CAAA,CAAA,EAAI,CAAA,CAAE,MAAM,CAAA,EAAA,EAAK,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,CAAA,CAAE,EAAE,CAAA,EAAG,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QAAE;AACrH,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,WAAA,EAAY;AAAA,MACzC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,gCAAA,EAAkC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAClH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"commitment-list.js","sourcesContent":["import { defineCommand, handleError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listCommitments } from '@kb-labs/steward-core';\n\ntype Flags = { status?: string; project?: string; 'stale-only'?: boolean; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:commitment.list',\n description: 'List commitments, optionally only the stale (overdue, unsnoozed) ones',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { status, project, json } = input.flags;\n const staleOnly = input.flags['stale-only'] ?? false;\n try {\n const commitments = await listCommitments({\n status: status as 'open' | 'done' | 'dropped' | undefined,\n projectId: project,\n staleOnly,\n });\n if (json) {ctx.ui?.json?.({ ok: true, result: commitments });}\n else if (commitments.length === 0) {ctx.ui?.info?.('Nothing here.');}\n else {ctx.ui?.chain?.(commitments.map((c) => ({ title: `[${c.status}] ${c.text}`, sections: [{ items: [c.id] }] })));}\n return { ok: true, result: commitments };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:commitment.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/utils/flags.ts","../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/commitment-snooze.ts"],"names":[],"mappings":";;;;;;AAUO,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC3B,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,EAAE,CAAA,EAAG;AACpB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,KAAK,CAAA,4CAAA,CAAyC,CAAA;AAAA,EAClF;AACA,EAAA,OAAO,EAAA;AACT;;;ACVA,IAAO,4BAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,2BAAA;AAAA,EACJ,WAAA,EAAa,wDAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,EAAE,CAAA,GAAI,KAAA,CAAM,IAAA;AACnB,MAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,KAAS,KAAA,CAAM,KAAA;AACtC,MAAA,IAAI,CAAC,EAAA,IAAM,CAAC,KAAA,EAAO,MAAK,EAAG;AACzB,QAAA,eAAA,CAAgB,GAAA,EAAK,6BAAA,EAA+B,sDAAA,EAAwD,IAAI,CAAA;AAChH,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,UAAA,GAAa,MAAM,gBAAA,CAAiB,EAAE,EAAA,EAAI,OAAO,SAAA,CAAU,KAAK,CAAA,EAAG,MAAA,EAAQ,CAAA;AACjF,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,IAAI,IAAA,EAAM;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAA,CAAA,IAAO,CAAA;AAAA,UAAE,CAAA,MACpG;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,UAAE;AAC/C,UAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,QAAQ,IAAA,EAAK;AAAA,QACvD;AACA,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,YAAY,CAAA;AAAA,QAAE,CAAA,MACvD;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,CAAA,SAAA,EAAY,WAAW,IAAI,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE,CAAA;AAAA,QAAE;AACpE,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAW;AAAA,MACxC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,kCAAA,EAAoC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AACpH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"commitment-snooze.js","sourcesContent":["/** Parses a `--flag=a,b,c` value into a trimmed string list. */\nexport function parseList(csv?: string): string[] | undefined {\n if (csv === undefined) {return undefined;}\n return csv\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/** Parses an ISO date/time flag into epoch milliseconds. Throws on garbage input. */\nexport function parseDate(value: string): number {\n const ms = Date.parse(value);\n if (Number.isNaN(ms)) {\n throw new Error(`Invalid date: \"${value}\" — expected ISO 8601 (e.g. 2026-09-01)`);\n }\n return ms;\n}\n","import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { commitmentSnooze } from '@kb-labs/steward-core';\nimport { parseDate } from '../utils/flags.js';\n\ntype Flags = { until?: string; reason?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:commitment.snooze',\n description: \"Postpone a commitment's reminder without cancelling it\",\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [id] = input.argv;\n const { until, reason, json } = input.flags;\n if (!id || !until?.trim()) {\n validationError(ctx, 'id and --until are required', 'Usage: kb steward commitment snooze <id> --until=...', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const commitment = await commitmentSnooze({ id, until: parseDate(until), reason });\n if (!commitment) {\n if (json) {ctx.ui?.json?.({ ok: false, error: { code: 'NOT_FOUND', message: `No commitment \"${id}\"` } });}\n else {ctx.ui?.error?.(`No commitment \"${id}\"`);}\n return { ok: false, error: 'NOT_FOUND', result: null };\n }\n if (json) {ctx.ui?.json?.({ ok: true, result: commitment });}\n else {ctx.ui?.info?.(`Snoozed \"${commitment.text}\" until ${until}`);}\n return { ok: true, result: commitment };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:commitment.snooze failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/company-add.ts"],"names":[],"mappings":";;;;AAKA,IAAO,sBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,qBAAA;AAAA,EACJ,WAAA,EAAa,2DAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AAC7B,MAAA,IAAI,CAAC,IAAA,EAAM,IAAA,EAAK,EAAG;AACjB,QAAA,eAAA,CAAgB,GAAA,EAAK,oBAAA,EAAsB,MAAA,EAAW,IAAI,CAAA;AAC1D,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,EAAE,MAAM,CAAA;AACzC,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,QAAE,CAAA,MACpD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA,eAAA,EAAkB,OAAA,CAAQ,IAAI,CAAA,GAAA,EAAM,OAAA,CAAQ,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AACxE,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAQ;AAAA,MACrC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,4BAAA,EAA8B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC9G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"company-add.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addCompany } from '@kb-labs/steward-core';\n\ntype Flags = { name?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:company.add',\n description: 'Add a company (thin — just a name to link people to)',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { name, json } = input.flags;\n if (!name?.trim()) {\n validationError(ctx, '--name is required', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const company = await addCompany({ name });\n if (json) {ctx.ui?.json?.({ ok: true, result: company });}\n else {ctx.ui?.info?.(`Added company \"${company.name}\" (${company.id})`);}\n return { ok: true, result: company };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:company.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/company-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,uBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,sBAAA;AAAA,EACJ,WAAA,EAAa,gBAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,GAAY,MAAM,aAAA,EAAc;AACtC,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,WAAW,CAAA;AAAA,QAAE,CAAA,MAAA,IAClD,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,mBAAmB,CAAA;AAAA,QAAE,CAAA,MACjE;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,QAAQ,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,OAAO,CAAA,CAAE,IAAA,EAAM,UAAU,CAAC,EAAE,OAAO,CAAC,CAAA,CAAE,EAAE,CAAA,EAAG,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QAAE;AAChG,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAU;AAAA,MACvC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,6BAAA,EAA+B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC/G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"company-list.js","sourcesContent":["import { defineCommand, handleError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listCompanies } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:company.list',\n description: 'List companies',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { json } = input.flags;\n try {\n const companies = await listCompanies();\n if (json) {ctx.ui?.json?.({ ok: true, result: companies });}\n else if (companies.length === 0) {ctx.ui?.info?.('No companies yet.');}\n else {ctx.ui?.chain?.(companies.map((c) => ({ title: c.name, sections: [{ items: [c.id] }] })));}\n return { ok: true, result: companies };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:company.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/event-add.ts"],"names":[],"mappings":";;;;AAKA,IAAM,gBAAgB,CAAC,SAAA,EAAW,QAAA,EAAU,YAAA,EAAc,WAAW,UAAU,CAAA;AAE/E,IAAO,oBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,mBAAA;AAAA,EACJ,WAAA,EAAa,2GAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAC9C,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAC1C,MAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,KAAS,KAAA,CAAM,KAAA;AAEnC,MAAA,IAAI,CAAC,WAAA,IAAe,CAAC,aAAA,CAAc,QAAA,CAAS,WAA6C,CAAA,EAAG;AAC1F,QAAA,eAAA,CAAgB,GAAA,EAAK,kCAAkC,aAAA,CAAc,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,EAAI,QAAW,IAAI,CAAA;AAClG,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AACA,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,eAAA,CAAgB,GAAA,EAAK,0BAAA,EAA4B,MAAA,EAAW,IAAI,CAAA;AAChE,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS;AAAA,UAC3B,WAAA;AAAA,UACA,SAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAM,IAAA,IAAQ;AAAA,SACf,CAAA;AACD,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA;AAAA,QAAE,CAAA,MAClD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA,gBAAA,EAAmB,KAAA,CAAM,IAAI,CAAA,KAAA,EAAQ,WAAW,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAA;AAAA,QAAE;AACtF,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAM;AAAA,MACnC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,0BAAA,EAA4B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC5G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"event-add.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addEvent } from '@kb-labs/steward-core';\n\ntype Flags = { 'subject-type'?: string; 'subject-id'?: string; text?: string; kind?: string; json?: boolean };\n\nconst SUBJECT_TYPES = ['project', 'person', 'commitment', 'company', 'resource'] as const;\n\nexport default defineCommand({\n id: 'steward:event.add',\n description: 'Record a manual note against a project, person, or commitment — the primary tool for backfill import',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const subjectType = input.flags['subject-type'];\n const subjectId = input.flags['subject-id'];\n const { text, kind, json } = input.flags;\n\n if (!subjectType || !SUBJECT_TYPES.includes(subjectType as (typeof SUBJECT_TYPES)[number])) {\n validationError(ctx, `--subject-type must be one of: ${SUBJECT_TYPES.join(', ')}`, undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n if (!subjectId) {\n validationError(ctx, '--subject-id is required', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const event = await addEvent({\n subjectType: subjectType as (typeof SUBJECT_TYPES)[number],\n subjectId,\n text,\n kind: kind ?? 'note',\n });\n if (json) {ctx.ui?.json?.({ ok: true, result: event });}\n else {ctx.ui?.info?.(`Recorded event \"${event.kind}\" on ${subjectType}:${subjectId}`);}\n return { ok: true, result: event };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:event.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/event-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,qBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,oBAAA;AAAA,EACJ,WAAA,EAAa,kEAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AAC7B,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAC9C,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AAC1C,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW;AAAA,UAC9B,WAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAAE,CAAA,MAAA,IAC/C,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,gBAAgB,CAAA;AAAA,QAAE,CAAA,MAC3D;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,KAAA,EAAO,CAAA,CAAA,EAAI,EAAE,IAAI,CAAA,EAAA,EAAK,IAAI,IAAA,CAAK,EAAE,EAAE,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA,EAAI,QAAA,EAAU,CAAC,EAAE,OAAO,CAAC,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE,UAAU,WAAW,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA;AAAA,QAAE;AACjK,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO;AAAA,MACpC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,2BAAA,EAA6B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC7G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"event-list.js","sourcesContent":["import { defineCommand, handleError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listEvents } from '@kb-labs/steward-core';\n\ntype Flags = { 'subject-type'?: string; 'subject-id'?: string; kind?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:event.list',\n description: 'Read the history log for a subject — \"what happened with X\"',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { json, kind } = input.flags;\n const subjectType = input.flags['subject-type'];\n const subjectId = input.flags['subject-id'];\n try {\n const events = await listEvents({\n subjectType: subjectType as 'project' | 'person' | 'commitment' | 'company' | 'resource' | undefined,\n subjectId,\n kind,\n });\n if (json) {ctx.ui?.json?.({ ok: true, result: events });}\n else if (events.length === 0) {ctx.ui?.info?.('No events yet.');}\n else {ctx.ui?.chain?.(events.map((e) => ({ title: `[${e.kind}] ${new Date(e.at).toISOString()}`, sections: [{ items: [e.text ?? e.reason ?? '(no text)'] }] })));}\n return { ok: true, result: events };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:event.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/utils/flags.ts","../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/member-add.ts"],"names":[],"mappings":";;;;;;AACO,SAAS,UAAU,GAAA,EAAoC;AAC5D,EAAA,IAAI,QAAQ,MAAA,EAAW;AAAC,IAAA,OAAO,MAAA;AAAA,EAAU;AACzC,EAAA,OAAO,GAAA,CACJ,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA,CACnB,MAAA,CAAO,OAAO,CAAA;AACnB;;;ACDA,IAAO,qBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,oBAAA;AAAA,EACJ,WAAA,EAAa,8DAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,QAAQ,OAAA,EAAS,IAAA,EAAM,QAAQ,QAAA,EAAU,IAAA,KAAS,KAAA,CAAM,KAAA;AAChE,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,WAAW,CAAC,IAAA,EAAM,MAAK,EAAG;AACxC,QAAA,eAAA,CAAgB,GAAA,EAAK,8CAAA,EAAgD,MAAA,EAAW,IAAI,CAAA;AACpF,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU;AAAA,UAC7B,QAAA,EAAU,MAAA;AAAA,UACV,SAAA,EAAW,OAAA;AAAA,UACX,IAAA;AAAA,UACA,MAAA,EAAQ,UAAU,MAAM,CAAA;AAAA,UACxB,QAAA,EAAU,QAAA,KAAa,KAAA,CAAA,GAAY,MAAA,CAAO,QAAQ,CAAA,GAAI;AAAA,SACvD,CAAA;AACD,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAAE,CAAA,MACnD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,OAAA,EAAU,MAAM,CAAA,IAAA,EAAO,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,YAAA,EAAe,MAAA,CAAO,QAAQ,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AAClG,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO;AAAA,MACpC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,2BAAA,EAA6B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC7G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"member-add.js","sourcesContent":["/** Parses a `--flag=a,b,c` value into a trimmed string list. */\nexport function parseList(csv?: string): string[] | undefined {\n if (csv === undefined) {return undefined;}\n return csv\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/** Parses an ISO date/time flag into epoch milliseconds. Throws on garbage input. */\nexport function parseDate(value: string): number {\n const ms = Date.parse(value);\n if (Number.isNaN(ms)) {\n throw new Error(`Invalid date: \"${value}\" — expected ISO 8601 (e.g. 2026-09-01)`);\n }\n return ms;\n}\n","import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addMember } from '@kb-labs/steward-core';\nimport { parseList } from '../utils/flags.js';\n\ntype Flags = { person?: string; project?: string; role?: string; topics?: string; priority?: number; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:member.add',\n description: 'Link a person to a project with a role and fallback priority',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { person, project, role, topics, priority, json } = input.flags;\n if (!person || !project || !role?.trim()) {\n validationError(ctx, '--person, --project, and --role are required', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const member = await addMember({\n personId: person,\n projectId: project,\n role,\n topics: parseList(topics),\n priority: priority !== undefined ? Number(priority) : 0,\n });\n if (json) {ctx.ui?.json?.({ ok: true, result: member });}\n else {ctx.ui?.info?.(`Linked ${person} to ${project} as \"${role}\" (priority ${member.priority})`);}\n return { ok: true, result: member };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:member.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/member-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,sBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,qBAAA;AAAA,EACJ,WAAA,EAAa,yDAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,SAAS,CAAA,GAAI,KAAA,CAAM,IAAA;AAC1B,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,eAAA,CAAgB,GAAA,EAAK,uBAAA,EAAyB,2CAAA,EAA6C,IAAI,CAAA;AAC/F,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,MAAM,WAAA,CAAY,SAAS,CAAA;AAC3C,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,QAAE,CAAA,MAAA,IAChD,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,iBAAiB,CAAA;AAAA,QAAE,CAAA,MAC7D;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,WAAA,EAAc,CAAA,CAAE,QAAQ,CAAA,CAAA,CAAA,EAAK,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,CAAA,CAAE,QAAQ,CAAA,EAAG,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QAAE;AAClI,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAQ;AAAA,MACrC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,4BAAA,EAA8B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC9G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"member-list.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listMembers } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:member.list',\n description: 'List members of a project, ordered by fallback priority',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [projectId] = input.argv;\n const { json } = input.flags;\n if (!projectId) {\n validationError(ctx, 'projectId is required', 'Usage: kb steward member list <projectId>', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const members = await listMembers(projectId);\n if (json) {ctx.ui?.json?.({ ok: true, result: members });}\n else if (members.length === 0) {ctx.ui?.info?.('No members yet.');}\n else {ctx.ui?.chain?.(members.map((m) => ({ title: `${m.role} (priority ${m.priority})`, sections: [{ items: [m.personId] }] })));}\n return { ok: true, result: members };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:member.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/utils/flags.ts","../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/person-add.ts"],"names":[],"mappings":";;;;;;AACO,SAAS,UAAU,GAAA,EAAoC;AAC5D,EAAA,IAAI,QAAQ,MAAA,EAAW;AAAC,IAAA,OAAO,MAAA;AAAA,EAAU;AACzC,EAAA,OAAO,GAAA,CACJ,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA,CACnB,MAAA,CAAO,OAAO,CAAA;AACnB;;;ACDA,IAAO,qBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,oBAAA;AAAA,EACJ,WAAA,EAAa,oFAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,KAAS,KAAA,CAAM,KAAA;AAC9C,MAAA,IAAI,CAAC,IAAA,EAAM,IAAA,EAAK,EAAG;AACjB,QAAA,eAAA,CAAgB,GAAA,EAAK,oBAAA,EAAsB,MAAA,EAAW,IAAI,CAAA;AAC1D,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,EAAE,MAAA,EAAQ,kBAAA,EAAmB,GAAI,MAAM,SAAA,CAAU;AAAA,UACrD,IAAA;AAAA,UACA,UAAU,EAAC;AAAA,UACX,SAAA,EAAW,OAAA;AAAA,UACX,YAAA,EAAc,SAAA,CAAU,MAAM,CAAA,IAAK;AAAC,SACrC,CAAA;AAED,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,IAAA,EAAM,QAAQ,EAAE,MAAA,EAAQ,kBAAA,EAAmB,EAAG,CAAA;AAAA,QACrE,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA,OAAA,EAAU,MAAA,CAAO,IAAI,CAAA,GAAA,EAAM,MAAA,CAAO,EAAE,CAAA,CAAA,CAAG,CAAA;AACtD,UAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,YAAA,GAAA,CAAI,IAAI,IAAA,GAAO,CAAA,kBAAA,EAAqB,mBAAmB,MAAA,GAAS,CAAA,GAAI,MAAM,EAAE,CAAA,EAAA,EAAK,mBAAmB,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,EAAE,EAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,UACnI;AAAA,QACF;AACA,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,QAAQ,EAAE,MAAA,EAAQ,oBAAmB,EAAE;AAAA,MAC5D,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,2BAAA,EAA6B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC7G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"person-add.js","sourcesContent":["/** Parses a `--flag=a,b,c` value into a trimmed string list. */\nexport function parseList(csv?: string): string[] | undefined {\n if (csv === undefined) {return undefined;}\n return csv\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/** Parses an ISO date/time flag into epoch milliseconds. Throws on garbage input. */\nexport function parseDate(value: string): number {\n const ms = Date.parse(value);\n if (Number.isNaN(ms)) {\n throw new Error(`Invalid date: \"${value}\" — expected ISO 8601 (e.g. 2026-09-01)`);\n }\n return ms;\n}\n","import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addPerson } from '@kb-labs/steward-core';\nimport { parseList } from '../utils/flags.js';\n\ntype Flags = { name?: string; topics?: string; company?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:person.add',\n description: 'Add a contact. Returns a possibleDuplicates warning, not an error, on a name match',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { name, topics, company, json } = input.flags;\n if (!name?.trim()) {\n validationError(ctx, '--name is required', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const { person, possibleDuplicates } = await addPerson({\n name,\n contacts: [],\n companyId: company,\n globalTopics: parseList(topics) ?? [],\n });\n\n if (json) {\n ctx.ui?.json?.({ ok: true, result: { person, possibleDuplicates } });\n } else {\n ctx.ui?.info?.(`Added \"${person.name}\" (${person.id})`);\n if (possibleDuplicates.length > 0) {\n ctx.ui?.warn?.(`Possible duplicate${possibleDuplicates.length > 1 ? 's' : ''}: ${possibleDuplicates.map((p) => p.id).join(', ')}`);\n }\n }\n return { ok: true, result: { person, possibleDuplicates } };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:person.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/person-get.ts"],"names":[],"mappings":";;;;AAKA,IAAO,qBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,oBAAA;AAAA,EACJ,WAAA,EAAa,mCAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,QAAQ,CAAA,GAAI,KAAA,CAAM,IAAA;AACzB,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,eAAA,CAAgB,GAAA,EAAK,sBAAA,EAAwB,yCAAA,EAA2C,IAAI,CAAA;AAC5F,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,QAAQ,CAAA;AACvC,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,IAAI,IAAA,EAAM;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,CAAA,IAAO,CAAA;AAAA,UAAE,CAAA,MAC/G;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,CAAG,CAAA;AAAA,UAAE;AAC1D,UAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,QAAQ,IAAA,EAAK;AAAA,QACvD;AAEA,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAAE,CAAA,MACnD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,gBAAA,EAAc,MAAA,CAAO,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,IAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,QAAE;AAC/F,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO;AAAA,MACpC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,2BAAA,EAA6B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC7G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"person-get.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { getPerson } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:person.get',\n description: 'Get a contact by id or exact name',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [idOrName] = input.argv;\n const { json } = input.flags;\n if (!idOrName) {\n validationError(ctx, 'idOrName is required', 'Usage: kb steward person get <idOrName>', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const person = await getPerson(idOrName);\n if (!person) {\n if (json) {ctx.ui?.json?.({ ok: false, error: { code: 'NOT_FOUND', message: `No person matching \"${idOrName}\"` } });}\n else {ctx.ui?.error?.(`No person matching \"${idOrName}\"`);}\n return { ok: false, error: 'NOT_FOUND', result: null };\n }\n\n if (json) {ctx.ui?.json?.({ ok: true, result: person });}\n else {ctx.ui?.info?.(`${person.name} — topics: ${person.globalTopics.join(', ') || '(none)'}`);}\n return { ok: true, result: person };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:person.get failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/person-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,sBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,qBAAA;AAAA,EACJ,WAAA,EAAa,0BAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,UAAA,EAAW;AAChC,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAAE,CAAA,MAAA,IAC/C,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,kBAAkB,CAAA;AAAA,QAAE,CAAA,MAC7D;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,EAAE,KAAA,EAAO,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,CAAA,CAAE,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,IAAK,aAAa,CAAA,EAAG,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QAAE;AACnI,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO;AAAA,MACpC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,4BAAA,EAA8B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC9G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"person-list.js","sourcesContent":["import { defineCommand, handleError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listPeople } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:person.list',\n description: 'List every known contact',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { json } = input.flags;\n try {\n const people = await listPeople();\n if (json) {ctx.ui?.json?.({ ok: true, result: people });}\n else if (people.length === 0) {ctx.ui?.info?.('No contacts yet.');}\n else {ctx.ui?.chain?.(people.map((p) => ({ title: p.name, sections: [{ items: [p.globalTopics.join(', ') || '(no topics)'] }] })));}\n return { ok: true, result: people };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:person.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/utils/flags.ts","../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/person-update.ts"],"names":[],"mappings":";;;;;;AACO,SAAS,UAAU,GAAA,EAAoC;AAC5D,EAAA,IAAI,QAAQ,MAAA,EAAW;AAAC,IAAA,OAAO,MAAA;AAAA,EAAU;AACzC,EAAA,OAAO,GAAA,CACJ,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA,CACnB,MAAA,CAAO,OAAO,CAAA;AACnB;;;ACDA,IAAO,wBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,uBAAA;AAAA,EACJ,WAAA,EAAa,6CAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,EAAE,CAAA,GAAI,KAAA,CAAM,IAAA;AACnB,MAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,IAAA,KAAS,KAAA,CAAM,KAAA;AAC9C,MAAA,IAAI,CAAC,EAAA,EAAI;AACP,QAAA,eAAA,CAAgB,GAAA,EAAK,gBAAA,EAAkB,sEAAA,EAAwE,IAAI,CAAA;AACnH,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,YAAA,CAAa,EAAE,EAAA,EAAI,IAAA,EAAM,YAAA,EAAc,SAAA,CAAU,MAAM,CAAA,EAAG,SAAA,EAAW,OAAA,EAAS,CAAA;AACnG,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,IAAI,IAAA,EAAM;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAA,WAAA,EAAc,EAAE,CAAA,CAAA,CAAA,IAAO,CAAA;AAAA,UAAE,CAAA,MAChG;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,CAAA,WAAA,EAAc,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,UAAE;AAC3C,UAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,QAAQ,IAAA,EAAK;AAAA,QACvD;AAEA,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAAE,CAAA,MACnD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,SAAA,EAAY,MAAA,CAAO,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AACjD,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO;AAAA,MACpC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,8BAAA,EAAgC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAChH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"person-update.js","sourcesContent":["/** Parses a `--flag=a,b,c` value into a trimmed string list. */\nexport function parseList(csv?: string): string[] | undefined {\n if (csv === undefined) {return undefined;}\n return csv\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/** Parses an ISO date/time flag into epoch milliseconds. Throws on garbage input. */\nexport function parseDate(value: string): number {\n const ms = Date.parse(value);\n if (Number.isNaN(ms)) {\n throw new Error(`Invalid date: \"${value}\" — expected ISO 8601 (e.g. 2026-09-01)`);\n }\n return ms;\n}\n","import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { updatePerson } from '@kb-labs/steward-core';\nimport { parseList } from '../utils/flags.js';\n\ntype Flags = { name?: string; topics?: string; company?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:person.update',\n description: \"Update a contact's name, topics, or company\",\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [id] = input.argv;\n const { name, topics, company, json } = input.flags;\n if (!id) {\n validationError(ctx, 'id is required', 'Usage: kb steward person update <id> [--name] [--topics] [--company]', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const person = await updatePerson({ id, name, globalTopics: parseList(topics), companyId: company });\n if (!person) {\n if (json) {ctx.ui?.json?.({ ok: false, error: { code: 'NOT_FOUND', message: `No person \"${id}\"` } });}\n else {ctx.ui?.error?.(`No person \"${id}\"`);}\n return { ok: false, error: 'NOT_FOUND', result: null };\n }\n\n if (json) {ctx.ui?.json?.({ ok: true, result: person });}\n else {ctx.ui?.info?.(`Updated \"${person.name}\"`);}\n return { ok: true, result: person };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:person.update failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/project-add.ts"],"names":[],"mappings":";;;;AAKA,IAAO,sBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,qBAAA;AAAA,EACJ,WAAA,EAAa,sBAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAA,EAAa,IAAA,KAAS,KAAA,CAAM,KAAA;AAClD,MAAA,IAAI,CAAC,IAAA,EAAM,IAAA,EAAK,EAAG;AACjB,QAAA,eAAA,CAAgB,GAAA,EAAK,oBAAA,EAAsB,MAAA,EAAW,IAAI,CAAA;AAC1D,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW;AAAA,UAC/B,IAAA;AAAA,UACA,QAAS,MAAA,IAA+C,QAAA;AAAA,UACxD;AAAA,SACD,CAAA;AAED,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,QAC9C,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA,iBAAA,EAAoB,OAAA,CAAQ,IAAI,CAAA,GAAA,EAAM,OAAA,CAAQ,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,QACpE;AACA,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAQ;AAAA,MACrC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,4BAAA,EAA8B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC9G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"project-add.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addProject } from '@kb-labs/steward-core';\n\ntype Flags = { name?: string; status?: string; description?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:project.add',\n description: 'Create a new project',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { name, status, description, json } = input.flags;\n if (!name?.trim()) {\n validationError(ctx, '--name is required', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const project = await addProject({\n name,\n status: (status as 'active' | 'paused' | 'archived') ?? 'active',\n description,\n });\n\n if (json) {\n ctx.ui?.json?.({ ok: true, result: project });\n } else {\n ctx.ui?.info?.(`Created project \"${project.name}\" (${project.id})`);\n }\n return { ok: true, result: project };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:project.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/project-get.ts"],"names":[],"mappings":";;;;AAKA,IAAO,sBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,qBAAA;AAAA,EACJ,WAAA,EAAa,oDAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,QAAQ,CAAA,GAAI,KAAA,CAAM,IAAA;AACzB,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,eAAA,CAAgB,GAAA,EAAK,sBAAA,EAAwB,0CAAA,EAA4C,IAAI,CAAA;AAC7F,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAW,QAAQ,CAAA;AACtC,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAA,qBAAA,EAAwB,QAAQ,CAAA,CAAA,CAAA,IAAO,CAAA;AAAA,UAC1G,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,CAAA,qBAAA,EAAwB,QAAQ,CAAA,CAAA,CAAG,CAAA;AAAA,UACrD;AACA,UAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,QAAQ,IAAA,EAAK;AAAA,QACvD;AAEA,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAA;AAAA,QAC3C,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,CAAA,EAAG,KAAK,OAAA,CAAQ,IAAI,KAAK,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,SAAA,EAAO,KAAK,SAAA,CAAU,MAAM,eAAe,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,QAAA,CAAU,CAAA;AAAA,QACrI;AACA,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAK;AAAA,MAClC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,4BAAA,EAA8B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC9G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"project-get.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { getProject } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:project.get',\n description: 'Get a project card: status, resources, and members',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [idOrName] = input.argv;\n const { json } = input.flags;\n if (!idOrName) {\n validationError(ctx, 'idOrName is required', 'Usage: kb steward project get <idOrName>', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const card = await getProject(idOrName);\n if (!card) {\n if (json) {\n ctx.ui?.json?.({ ok: false, error: { code: 'NOT_FOUND', message: `No project matching \"${idOrName}\"` } });\n } else {\n ctx.ui?.error?.(`No project matching \"${idOrName}\"`);\n }\n return { ok: false, error: 'NOT_FOUND', result: null };\n }\n\n if (json) {\n ctx.ui?.json?.({ ok: true, result: card });\n } else {\n ctx.ui?.info?.(`${card.project.name} [${card.project.status}] — ${card.resources.length} resources, ${card.members.length} members`);\n }\n return { ok: true, result: card };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:project.get failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/project-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,uBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,sBAAA;AAAA,EACJ,WAAA,EAAa,8CAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AAC/B,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,EAAE,QAAgE,CAAA;AACtG,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAA;AAAA,QAC/C,CAAA,MAAA,IAAW,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AAChC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,kBAAkB,CAAA;AAAA,QACnC,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA;AAAA,YACN,QAAA,CAAS,IAAI,CAAC,CAAA,MAAO,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,EAAA,EAAK,CAAA,CAAE,MAAM,CAAA,CAAA,CAAA,EAAK,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,EAAE,EAAE,CAAA,EAAG,CAAA,EAAE,CAAE;AAAA,WAC3F;AAAA,QACF;AACA,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAS;AAAA,MACtC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,6BAAA,EAA+B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC/G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"project-list.js","sourcesContent":["import { defineCommand, handleError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listProjects } from '@kb-labs/steward-core';\n\ntype Flags = { status?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:project.list',\n description: 'List projects, optionally filtered by status',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { status, json } = input.flags;\n try {\n const projects = await listProjects({ status: status as 'active' | 'paused' | 'archived' | undefined });\n if (json) {\n ctx.ui?.json?.({ ok: true, result: projects });\n } else if (projects.length === 0) {\n ctx.ui?.info?.('No projects yet.');\n } else {\n ctx.ui?.chain?.(\n projects.map((p) => ({ title: `${p.name} [${p.status}]`, sections: [{ items: [p.id] }] })),\n );\n }\n return { ok: true, result: projects };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:project.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/project-update.ts"],"names":[],"mappings":";;;;AAKA,IAAO,yBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,wBAAA;AAAA,EACJ,WAAA,EAAa,0CAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,EAAE,CAAA,GAAI,KAAA,CAAM,IAAA;AACnB,MAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,EAAa,IAAA,KAAS,KAAA,CAAM,KAAA;AAC5C,MAAA,IAAI,CAAC,EAAA,EAAI;AACP,QAAA,eAAA,CAAgB,GAAA,EAAK,gBAAA,EAAkB,kEAAA,EAAoE,IAAI,CAAA;AAC/G,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc;AAAA,UAClC,EAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,IAAI,IAAA,EAAM;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,OAAO,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,CAAA,YAAA,EAAe,EAAE,CAAA,CAAA,CAAA,IAAO,CAAA;AAAA,UAAE,CAAA,MACjG;AAAC,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,CAAA,YAAA,EAAe,EAAE,CAAA,CAAA,CAAG,CAAA;AAAA,UAAE;AAC5C,UAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,QAAQ,IAAA,EAAK;AAAA,QACvD;AAEA,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,QAAE,CAAA,MACpD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA,SAAA,EAAY,OAAA,CAAQ,IAAI,CAAA,UAAA,EAAQ,OAAA,CAAQ,MAAM,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AACxE,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAQ;AAAA,MACrC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,+BAAA,EAAiC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AACjH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"project-update.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { updateProject } from '@kb-labs/steward-core';\n\ntype Flags = { status?: string; description?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:project.update',\n description: \"Update a project's status or description\",\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [id] = input.argv;\n const { status, description, json } = input.flags;\n if (!id) {\n validationError(ctx, 'id is required', 'Usage: kb steward project update <id> [--status] [--description]', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const project = await updateProject({\n id,\n status: status as 'active' | 'paused' | 'archived' | undefined,\n description,\n });\n if (!project) {\n if (json) {ctx.ui?.json?.({ ok: false, error: { code: 'NOT_FOUND', message: `No project \"${id}\"` } });}\n else {ctx.ui?.error?.(`No project \"${id}\"`);}\n return { ok: false, error: 'NOT_FOUND', result: null };\n }\n\n if (json) {ctx.ui?.json?.({ ok: true, result: project });}\n else {ctx.ui?.info?.(`Updated \"${project.name}\" → [${project.status}]`);}\n return { ok: true, result: project };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:project.update failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/resource-add.ts"],"names":[],"mappings":";;;;AAKA,IAAO,uBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,sBAAA;AAAA,EACJ,WAAA,EAAa,mEAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,SAAS,CAAA,GAAI,KAAA,CAAM,IAAA;AAC1B,MAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,KAAK,OAAA,EAAS,IAAA,KAAS,KAAA,CAAM,KAAA;AAClD,MAAA,IAAI,CAAC,aAAa,CAAC,IAAA,EAAM,MAAK,IAAK,CAAC,KAAA,EAAO,IAAA,EAAK,EAAG;AACjD,QAAA,eAAA;AAAA,UACE,GAAA;AAAA,UACA,6CAAA;AAAA,UACA,yFAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AACA,MAAA,IAAI,CAAC,GAAA,IAAO,CAAC,OAAA,EAAS;AACpB,QAAA,eAAA,CAAgB,GAAA,EAAK,6CAAA,EAA+C,MAAA,EAAW,IAAI,CAAA;AACnF,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,EAAE,WAAW,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,OAAA,EAAS,CAAA;AAC3E,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAA;AAAA,QAAE,CAAA,MACrD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,gBAAA,EAAmB,QAAA,CAAS,KAAK,MAAM,QAAA,CAAS,IAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAE,CAAA;AAAA,QAAE;AACtG,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAS;AAAA,MACtC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,6BAAA,EAA+B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC/G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"resource-add.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addResource } from '@kb-labs/steward-core';\n\ntype Flags = { type?: string; label?: string; url?: string; content?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:resource.add',\n description: 'Attach a resource to a project (repo, stand, dashboard, doc, ...)',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [projectId] = input.argv;\n const { type, label, url, content, json } = input.flags;\n if (!projectId || !type?.trim() || !label?.trim()) {\n validationError(\n ctx,\n 'projectId, --type, and --label are required',\n 'Usage: kb steward resource add <projectId> --type=... --label=... [--url=] [--content=]',\n json,\n );\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n if (!url && !content) {\n validationError(ctx, 'at least one of --url/--content must be set', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const resource = await addResource({ projectId, type, label, url, content });\n if (json) {ctx.ui?.json?.({ ok: true, result: resource });}\n else {ctx.ui?.info?.(`Added resource \"${resource.label}\" (${resource.type}) to project ${projectId}`);}\n return { ok: true, result: resource };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:resource.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/resource-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,wBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,uBAAA;AAAA,EACJ,WAAA,EAAa,sCAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,SAAS,CAAA,GAAI,KAAA,CAAM,IAAA;AAC1B,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,eAAA,CAAgB,GAAA,EAAK,uBAAA,EAAyB,6CAAA,EAA+C,IAAI,CAAA;AACjG,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,GAAY,MAAM,aAAA,CAAc,SAAS,CAAA;AAC/C,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,WAAW,CAAA;AAAA,QAAE,CAAA,MAAA,IAClD,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,mBAAmB,CAAA;AAAA,QAAE,CAAA,MACjE;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,KAAK,CAAA,EAAA,EAAK,CAAA,CAAE,IAAI,CAAA,CAAA,CAAA,EAAK,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,CAAA,CAAE,GAAA,IAAO,UAAU,CAAA,EAAG,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QAAE;AACjI,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAU;AAAA,MACvC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,8BAAA,EAAgC,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAChH,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"resource-list.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listResources } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:resource.list',\n description: 'List resources attached to a project',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [projectId] = input.argv;\n const { json } = input.flags;\n if (!projectId) {\n validationError(ctx, 'projectId is required', 'Usage: kb steward resource list <projectId>', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const resources = await listResources(projectId);\n if (json) {ctx.ui?.json?.({ ok: true, result: resources });}\n else if (resources.length === 0) {ctx.ui?.info?.('No resources yet.');}\n else {ctx.ui?.chain?.(resources.map((r) => ({ title: `${r.label} (${r.type})`, sections: [{ items: [r.url ?? '(no url)'] }] })));}\n return { ok: true, result: resources };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:resource.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/review.ts"],"names":[],"mappings":";;;;AAKA,IAAO,iBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,gBAAA;AAAA,EACJ,WAAA,EACE,kHAAA;AAAA,EAEF,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,cAAA,EAAe;AACpC,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAC7C,CAAA,MAAO;AACL,UAAA,MAAM,aACJ,MAAA,CAAO,iBAAA,KAAsB,OACzB,oBAAA,GACA,CAAA,aAAA,EAAgB,OAAO,iBAAiB,CAAA,KAAA,CAAA;AAC9C,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,UAAU,CAAA;AACzB,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,EAAG,MAAA,CAAO,iBAAiB,MAAM,CAAA,sBAAA,EAAyB,MAAA,CAAO,mBAAA,CAAoB,MAAM,CAAA,WAAA,EAAc,MAAA,CAAO,cAAA,CAAe,MAAM,CAAA,kBAAA,CAAoB,CAAA;AACxK,UAAA,IAAI,MAAA,CAAO,gBAAA,CAAiB,MAAA,GAAS,CAAA,EAAG;AACtC,YAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,MAAA,CAAO,gBAAA,CAAiB,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,KAAA,EAAO,CAAA,QAAA,EAAW,CAAA,CAAE,IAAI,IAAI,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,CAAA,CAAE,EAAE,CAAA,EAAG,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,UACrH;AAAA,QACF;AACA,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO;AAAA,MACpC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,uBAAA,EAAyB,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AACzG,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"review.js","sourcesContent":["import { defineCommand, handleError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { getDailyReview } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:review',\n description:\n 'Daily summary: stale commitments, upcoming reminders, active projects, and days since the last successful backup',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { json } = input.flags;\n try {\n const review = await getDailyReview();\n if (json) {\n ctx.ui?.json?.({ ok: true, result: review });\n } else {\n const backupLine =\n review.lastBackupDaysAgo === null\n ? 'last backup: never'\n : `last backup: ${review.lastBackupDaysAgo}d ago`;\n ctx.ui?.info?.(backupLine);\n ctx.ui?.info?.(`${review.staleCommitments.length} stale commitment(s), ${review.upcomingCommitments.length} upcoming, ${review.activeProjects.length} active project(s)`);\n if (review.staleCommitments.length > 0) {\n ctx.ui?.chain?.(review.staleCommitments.map((c) => ({ title: `[stale] ${c.text}`, sections: [{ items: [c.id] }] })));\n }\n }\n return { ok: true, result: review };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:review failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/utils/flags.ts","../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/topic-add.ts"],"names":[],"mappings":";;;;;;AACO,SAAS,UAAU,GAAA,EAAoC;AAC5D,EAAA,IAAI,QAAQ,MAAA,EAAW;AAAC,IAAA,OAAO,MAAA;AAAA,EAAU;AACzC,EAAA,OAAO,GAAA,CACJ,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA,CACnB,MAAA,CAAO,OAAO,CAAA;AACnB;;;ACDA,IAAO,oBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,mBAAA;AAAA,EACJ,WAAA,EAAa,wGAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,KAAS,KAAA,CAAM,KAAA;AACtC,MAAA,IAAI,CAAC,IAAA,EAAM,IAAA,EAAK,EAAG;AACjB,QAAA,eAAA,CAAgB,GAAA,EAAK,oBAAA,EAAsB,MAAA,EAAW,IAAI,CAAA;AAC1D,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,CAAU,OAAO,CAAA,IAAK,EAAC,EAAG,CAAA;AACxE,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA;AAAA,QAAE,CAAA,MAClD;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,kBAAA,EAAqB,KAAA,CAAM,IAAI,CAAA,YAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,IAAK,MAAM,CAAA,CAAA,CAAG,CAAA;AAAA,QAAE;AAC1G,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAM;AAAA,MACnC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,0BAAA,EAA4B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC5G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"topic-add.js","sourcesContent":["/** Parses a `--flag=a,b,c` value into a trimmed string list. */\nexport function parseList(csv?: string): string[] | undefined {\n if (csv === undefined) {return undefined;}\n return csv\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/** Parses an ISO date/time flag into epoch milliseconds. Throws on garbage input. */\nexport function parseDate(value: string): number {\n const ms = Date.parse(value);\n if (Number.isNaN(ms)) {\n throw new Error(`Invalid date: \"${value}\" — expected ISO 8601 (e.g. 2026-09-01)`);\n }\n return ms;\n}\n","import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { addTopic } from '@kb-labs/steward-core';\nimport { parseList } from '../utils/flags.js';\n\ntype Flags = { name?: string; aliases?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:topic.add',\n description: 'Register a topic with aliases in the routing dictionary — do this deliberately, not automatically',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { name, aliases, json } = input.flags;\n if (!name?.trim()) {\n validationError(ctx, '--name is required', undefined, json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const topic = await addTopic({ name, aliases: parseList(aliases) ?? [] });\n if (json) {ctx.ui?.json?.({ ok: true, result: topic });}\n else {ctx.ui?.info?.(`Registered topic \"${topic.name}\" (aliases: ${topic.aliases.join(', ') || 'none'})`);}\n return { ok: true, result: topic };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:topic.add failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/topic-list.ts"],"names":[],"mappings":";;;;AAKA,IAAO,qBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,oBAAA;AAAA,EACJ,WAAA,EAAa,2BAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,EAAE,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AACvB,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,UAAA,EAAW;AAChC,QAAA,IAAI,IAAA,EAAM;AAAC,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,QAAE,CAAA,MAAA,IAC/C,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,OAAO,2BAA2B,CAAA;AAAA,QAAE,CAAA,MACtE;AAAC,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,EAAE,KAAA,EAAO,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,IAAK,cAAc,CAAA,EAAG,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QAAE;AAC/H,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO;AAAA,MACpC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,2BAAA,EAA6B,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAC7G,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"topic-list.js","sourcesContent":["import { defineCommand, handleError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { listTopics } from '@kb-labs/steward-core';\n\ntype Flags = { json?: boolean };\n\nexport default defineCommand({\n id: 'steward:topic.list',\n description: 'List the topic dictionary',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const { json } = input.flags;\n try {\n const topics = await listTopics();\n if (json) {ctx.ui?.json?.({ ok: true, result: topics });}\n else if (topics.length === 0) {ctx.ui?.info?.('No topics registered yet.');}\n else {ctx.ui?.chain?.(topics.map((t) => ({ title: t.name, sections: [{ items: [t.aliases.join(', ') || '(no aliases)'] }] })));}\n return { ok: true, result: topics };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:topic.list failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|
package/dist/commands/who.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../home/runner/work/kb-labs/kb-labs/plugins/steward/entry/src/commands/who.ts"],"names":[],"mappings":";;;;AAKA,IAAO,cAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,aAAA;AAAA,EACJ,WAAA,EAAa,uFAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAwB;AAC1D,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI,KAAA,CAAM,IAAA;AACtB,MAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAK,GAAI,KAAA,CAAM,KAAA;AAChC,MAAA,IAAI,CAAC,KAAA,EAAO,IAAA,EAAK,EAAG;AAClB,QAAA,eAAA,CAAgB,GAAA,EAAK,mBAAA,EAAqB,4CAAA,EAA8C,IAAI,CAAA;AAC5F,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,QAAQ,IAAA,EAAK;AAAA,MAC1D;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,aAAa,MAAM,YAAA,CAAa,EAAE,KAAA,EAAO,SAAA,EAAW,SAAS,CAAA;AACnE,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,YAAY,CAAA;AAAA,QACjD,CAAA,MAAA,IAAW,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAClC,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,CAAA,kBAAA,EAAqB,KAAK,CAAA,EAAA,CAAI,CAAA;AAAA,QAC/C,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,EAAA,EAAI,KAAA;AAAA,YACN,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,MAAO;AAAA,cACxB,OAAO,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,OAAO,IAAI,CAAA,EAAA,EAAK,EAAE,MAAM,CAAA,EAAG,EAAE,QAAA,KAAa,KAAA,CAAA,GAAY,cAAc,CAAA,CAAE,QAAQ,KAAK,EAAE,CAAA,CAAA,CAAA;AAAA,cAC3G,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,CAAC,EAAE,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,EAAA,KAAO,CAAA,EAAG,GAAG,OAAO,CAAA,CAAA,EAAI,EAAA,CAAG,KAAK,CAAA,CAAE,CAAA,CAAE,KAAK,IAAI,CAAA,IAAK,eAAe,CAAA,EAAG;AAAA,aAClH,CAAE;AAAA,WACJ;AAAA,QACF;AACA,QAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAW;AAAA,MACxC,SAAS,GAAA,EAAK;AACZ,QAAA,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ,KAAA,GAAQ,oBAAA,EAAsB,GAAA,YAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AACtG,QAAA,WAAA,CAAY,GAAA,EAAK,KAAK,IAAI,CAAA;AAC1B,QAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK;AAAA,MAC5F;AAAA,IACF;AAAA;AAEJ,CAAC","file":"who.js","sourcesContent":["import { defineCommand, handleError, validationError, type CLIInput, type PluginContextV3 } from '@kb-labs/sdk';\nimport { whoToContact } from '@kb-labs/steward-core';\n\ntype Flags = { project?: string; json?: boolean };\n\nexport default defineCommand({\n id: 'steward:who',\n description: 'Find who to contact about a topic, with project-scoped priority and a global fallback',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<Flags>) {\n const [topic] = input.argv;\n const { project, json } = input.flags;\n if (!topic?.trim()) {\n validationError(ctx, 'topic is required', 'Usage: kb steward who <topic> [--project=]', json);\n return { ok: false, error: 'INVALID_ARGS', result: null };\n }\n\n try {\n const candidates = await whoToContact({ topic, projectId: project });\n if (json) {\n ctx.ui?.json?.({ ok: true, result: candidates });\n } else if (candidates.length === 0) {\n ctx.ui?.info?.(`Nobody found for \"${topic}\".`);\n } else {\n ctx.ui?.chain?.(\n candidates.map((c, i) => ({\n title: `${i + 1}. ${c.person.name} (${c.source}${c.priority !== undefined ? `, priority ${c.priority}` : ''})`,\n sections: [{ items: [c.person.contacts.map((ct) => `${ct.channel}:${ct.value}`).join(', ') || '(no contacts)'] }],\n })),\n );\n }\n return { ok: true, result: candidates };\n } catch (err) {\n ctx.platform.logger?.error?.('steward:who failed', err instanceof Error ? err : new Error(String(err)));\n handleError(ctx, err, json);\n return { ok: false, error: err instanceof Error ? err.message : String(err), result: null };\n }\n },\n },\n});\n"]}
|