@productbrain/cli 0.1.0-beta.8023 → 0.1.0-beta.8033

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/__tests__/capture.test.js +6 -5
  2. package/dist/__tests__/capture.test.js.map +1 -1
  3. package/dist/__tests__/codex-prep-parity.test.js +0 -1
  4. package/dist/__tests__/codex-prep-parity.test.js.map +1 -1
  5. package/dist/__tests__/entryAccept.test.js +3 -19
  6. package/dist/__tests__/entryAccept.test.js.map +1 -1
  7. package/dist/__tests__/relate.test.js +4 -16
  8. package/dist/__tests__/relate.test.js.map +1 -1
  9. package/dist/__tests__/vocabulary-leak.test.js +0 -1
  10. package/dist/__tests__/vocabulary-leak.test.js.map +1 -1
  11. package/dist/commands/organisation.d.ts.map +1 -1
  12. package/dist/commands/organisation.js +0 -2
  13. package/dist/commands/organisation.js.map +1 -1
  14. package/dist/commands/organisation.test.js +3 -8
  15. package/dist/commands/organisation.test.js.map +1 -1
  16. package/dist/commands/orient.d.ts +0 -5
  17. package/dist/commands/orient.d.ts.map +1 -1
  18. package/dist/commands/orient.js +0 -1
  19. package/dist/commands/orient.js.map +1 -1
  20. package/dist/commands/relate.d.ts.map +1 -1
  21. package/dist/commands/relate.js +12 -24
  22. package/dist/commands/relate.js.map +1 -1
  23. package/dist/formatters/__tests__/orient-provenance.test.js +0 -1
  24. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -1
  25. package/dist/formatters/__tests__/orient-ruleLists.test.js +0 -1
  26. package/dist/formatters/__tests__/orient-ruleLists.test.js.map +1 -1
  27. package/dist/formatters/entryAccept.d.ts +0 -6
  28. package/dist/formatters/entryAccept.d.ts.map +1 -1
  29. package/dist/formatters/entryAccept.js +3 -11
  30. package/dist/formatters/entryAccept.js.map +1 -1
  31. package/dist/formatters/orient.d.ts +0 -5
  32. package/dist/formatters/orient.d.ts.map +1 -1
  33. package/dist/formatters/orient.js +2 -9
  34. package/dist/formatters/orient.js.map +1 -1
  35. package/dist/formatters/orient.rcrtMiss.test.js +0 -1
  36. package/dist/formatters/orient.rcrtMiss.test.js.map +1 -1
  37. package/dist/formatters/orient.rituals.test.js +0 -1
  38. package/dist/formatters/orient.rituals.test.js.map +1 -1
  39. package/dist/formatters/orient.shapeAdvisorySummary.test.js +0 -1
  40. package/dist/formatters/orient.shapeAdvisorySummary.test.js.map +1 -1
  41. package/dist/formatters/orientDirection.test.js +0 -1
  42. package/dist/formatters/orientDirection.test.js.map +1 -1
  43. package/dist/formatters/relate.d.ts +1 -3
  44. package/dist/formatters/relate.d.ts.map +1 -1
  45. package/dist/formatters/relate.js +2 -6
  46. package/dist/formatters/relate.js.map +1 -1
  47. package/dist/formatters/relate.test.js +2 -4
  48. package/dist/formatters/relate.test.js.map +1 -1
  49. package/dist/generated/routeLatencyBudget.generated.d.ts.map +1 -1
  50. package/dist/generated/routeLatencyBudget.generated.js +0 -3
  51. package/dist/generated/routeLatencyBudget.generated.js.map +1 -1
  52. package/dist/index.js +1 -2
  53. package/dist/index.js.map +1 -1
  54. package/dist/lib/captureLink.d.ts.map +1 -1
  55. package/dist/lib/captureLink.js +14 -0
  56. package/dist/lib/captureLink.js.map +1 -1
  57. package/dist/lib/captureVersion.d.ts +2 -2
  58. package/dist/lib/captureVersion.js +2 -2
  59. package/package.json +1 -1
  60. package/dist/__tests__/proposals.test.d.ts +0 -2
  61. package/dist/__tests__/proposals.test.d.ts.map +0 -1
  62. package/dist/__tests__/proposals.test.js +0 -167
  63. package/dist/__tests__/proposals.test.js.map +0 -1
  64. package/dist/commands/accept.d.ts +0 -18
  65. package/dist/commands/accept.d.ts.map +0 -1
  66. package/dist/commands/accept.js +0 -76
  67. package/dist/commands/accept.js.map +0 -1
  68. package/dist/commands/proposals.d.ts +0 -9
  69. package/dist/commands/proposals.d.ts.map +0 -1
  70. package/dist/commands/proposals.js +0 -24
  71. package/dist/commands/proposals.js.map +0 -1
  72. package/dist/commands/reject.d.ts +0 -14
  73. package/dist/commands/reject.d.ts.map +0 -1
  74. package/dist/commands/reject.js +0 -44
  75. package/dist/commands/reject.js.map +0 -1
  76. package/dist/formatters/proposals.d.ts +0 -45
  77. package/dist/formatters/proposals.d.ts.map +0 -1
  78. package/dist/formatters/proposals.js +0 -62
  79. package/dist/formatters/proposals.js.map +0 -1
  80. package/dist/registerProposalCommands.d.ts +0 -13
  81. package/dist/registerProposalCommands.d.ts.map +0 -1
  82. package/dist/registerProposalCommands.js +0 -76
  83. package/dist/registerProposalCommands.js.map +0 -1
@@ -1,45 +0,0 @@
1
- /**
2
- * Proposals formatter — terminal output for pb proposals, pb accept, pb reject.
3
- * Chain: BET-221 (Governance at Scale), FEAT-693.
4
- */
5
- export interface ProposalItem {
6
- _id: string;
7
- targetEntryName: string;
8
- targetEntryHumanId: string | null;
9
- toEntryName: string | null;
10
- toEntryHumanId: string | null;
11
- proposedOperation: string;
12
- reasoning: string;
13
- proposedBy: string;
14
- status: string;
15
- expiresAt: number;
16
- hoursRemaining: number;
17
- isExpired: boolean;
18
- createdAt: number;
19
- objectionReason: string | null;
20
- }
21
- export interface ProposalsListData {
22
- proposals: ProposalItem[];
23
- count: number;
24
- }
25
- export declare function formatProposalsList(data: ProposalsListData): string;
26
- export interface RespondResultData {
27
- status: string;
28
- proposalId: string;
29
- message: string;
30
- }
31
- export declare function formatAcceptReceipt(data: RespondResultData): string;
32
- export declare function formatRejectReceipt(data: RespondResultData): string;
33
- export interface AutoAcceptReport {
34
- approved: Array<{
35
- id: string;
36
- label: string;
37
- }>;
38
- skipped: Array<{
39
- id: string;
40
- label: string;
41
- reason: string;
42
- }>;
43
- }
44
- export declare function formatAutoAcceptReport(data: AutoAcceptReport): string;
45
- //# sourceMappingURL=proposals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposals.d.ts","sourceRoot":"","sources":["../../src/formatters/proposals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CA+BnE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA0BrE"}
@@ -1,62 +0,0 @@
1
- /**
2
- * Proposals formatter — terminal output for pb proposals, pb accept, pb reject.
3
- * Chain: BET-221 (Governance at Scale), FEAT-693.
4
- */
5
- export function formatProposalsList(data) {
6
- if (data.count === 0) {
7
- return 'No open consent proposals.';
8
- }
9
- const lines = [];
10
- lines.push(`${data.count} open consent proposal(s):`);
11
- lines.push('');
12
- for (const p of data.proposals) {
13
- const urgency = p.isExpired
14
- ? 'EXPIRED'
15
- : p.hoursRemaining < 1
16
- ? '< 1h remaining'
17
- : `${p.hoursRemaining}h remaining`;
18
- const fromLabel = p.targetEntryHumanId ?? p.targetEntryName;
19
- const toLabel = p.toEntryHumanId ?? p.toEntryName ?? 'unknown';
20
- lines.push(` ${fromLabel} governs ${toLabel} (${urgency})`);
21
- lines.push(` ID: ${p._id}`);
22
- lines.push(` Reason: ${p.reasoning}`);
23
- lines.push(` Proposed by: ${p.proposedBy}`);
24
- if (p.objectionReason) {
25
- lines.push(` Objection: ${p.objectionReason}`);
26
- }
27
- lines.push('');
28
- }
29
- lines.push('Actions: pb proposal accept <id> | pb proposal reject <id> --reason "..."');
30
- return lines.join('\n');
31
- }
32
- export function formatAcceptReceipt(data) {
33
- return `Approved: ${data.message}`;
34
- }
35
- export function formatRejectReceipt(data) {
36
- return `Rejected: ${data.message}`;
37
- }
38
- export function formatAutoAcceptReport(data) {
39
- const lines = [];
40
- if (data.approved.length > 0) {
41
- lines.push(`Auto-approved ${data.approved.length} proposal(s):`);
42
- for (const a of data.approved) {
43
- lines.push(` + ${a.label} (${a.id})`);
44
- }
45
- }
46
- if (data.skipped.length > 0) {
47
- if (lines.length > 0)
48
- lines.push('');
49
- lines.push(`Skipped ${data.skipped.length} proposal(s) — manual review required:`);
50
- for (const s of data.skipped) {
51
- lines.push(` - ${s.label} (${s.id})`);
52
- lines.push(` Reason: ${s.reason}`);
53
- }
54
- lines.push('');
55
- lines.push('Review skipped proposals: pb proposal list');
56
- }
57
- if (data.approved.length === 0 && data.skipped.length === 0) {
58
- return 'No open proposals to process.';
59
- }
60
- return lines.join('\n');
61
- }
62
- //# sourceMappingURL=proposals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../src/formatters/proposals.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * `pb promote` retirement + `pb proposal accept|reject|list` — noun-scoped consent-
3
- * proposal governance commands (DEC-1574/1578, WP-640 S4). Split out of index.ts
4
- * (STD-2/DEC-1504: index.ts is grandfathered over-budget and shrink-only), same
5
- * "own every command group in its own file" precedent as registerEntryCommands.ts.
6
- *
7
- * `pb promote` and the bare `pb accept` / `pb reject` / `pb proposals` retire with a
8
- * CLEAN BREAK — no warning alias, no telemetry shim (DEC-1578's own precedent). Every
9
- * caller must move to the noun-scoped form.
10
- */
11
- import type { Command } from 'commander';
12
- export declare function registerProposalCommands(program: Command): void;
13
- //# sourceMappingURL=registerProposalCommands.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerProposalCommands.d.ts","sourceRoot":"","sources":["../src/registerProposalCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6E/D"}
@@ -1,76 +0,0 @@
1
- import { CLIError, ErrorCode } from './lib/errors.js';
2
- import { runAccept } from './commands/accept.js';
3
- import { runReject } from './commands/reject.js';
4
- import { runProposals } from './commands/proposals.js';
5
- export function registerProposalCommands(program) {
6
- program
7
- .command('promote <entry-ids...>')
8
- .description('RETIRED (DEC-1578) — use `pb entry accept <entry-ids...>` instead.')
9
- .action(() => {
10
- throw new CLIError('`pb promote` is retired. Use `pb entry accept <entry-ids...>` instead — same server route (chain.commitEntry), same flags.', {
11
- code: ErrorCode.VALIDATION_FAILED,
12
- category: 'validation',
13
- guidance: 'Usage: pb entry accept <entry-id> [<entry-id>...] [-m <message>] [--override-reason ...] [--acknowledge ...]',
14
- });
15
- });
16
- const proposalCmd = program
17
- .command('proposal')
18
- .description('Consent-proposal governance commands (BET-221) — noun-scoped per DEC-1574');
19
- proposalCmd
20
- .command('list')
21
- .description('List open consent proposals with expiry countdown (BET-221)')
22
- .action(async () => {
23
- await runProposals();
24
- });
25
- proposalCmd
26
- .command('accept [proposal-id]')
27
- .description('Approve a consent proposal by ID, or --auto to batch-approve all')
28
- .option('-a, --auto', 'Auto-approve all open proposals (skip contradictions)')
29
- .action(async (proposalId, opts) => {
30
- if (!proposalId && !opts.auto) {
31
- throw new CLIError('Usage: pb proposal accept <proposal-id> or pb proposal accept --auto', {
32
- code: ErrorCode.VALIDATION_FAILED,
33
- category: 'validation',
34
- });
35
- }
36
- await runAccept({ proposalId, auto: opts.auto });
37
- });
38
- proposalCmd
39
- .command('reject <proposal-id>')
40
- .description('Reject a consent proposal with a required reason (BR-7)')
41
- .requiredOption('-r, --reason <text>', 'Reason for rejection (required)')
42
- .action(async (proposalId, opts) => {
43
- await runReject({ proposalId, reason: opts.reason });
44
- });
45
- program
46
- .command('proposals')
47
- .description('RETIRED (DEC-1574) — use `pb proposal list` instead.')
48
- .action(() => {
49
- throw new CLIError('`pb proposals` is retired. Use `pb proposal list` instead.', {
50
- code: ErrorCode.VALIDATION_FAILED,
51
- category: 'validation',
52
- guidance: 'Usage: pb proposal list',
53
- });
54
- });
55
- program
56
- .command('accept [proposal-id]')
57
- .description('RETIRED (DEC-1574) — use `pb proposal accept` instead.')
58
- .action(() => {
59
- throw new CLIError('`pb accept` is retired. Use `pb proposal accept <proposal-id>` (or `pb proposal accept --auto`) instead.', {
60
- code: ErrorCode.VALIDATION_FAILED,
61
- category: 'validation',
62
- guidance: 'Usage: pb proposal accept <proposal-id> | pb proposal accept --auto',
63
- });
64
- });
65
- program
66
- .command('reject <proposal-id>')
67
- .description('RETIRED (DEC-1574) — use `pb proposal reject` instead.')
68
- .action(() => {
69
- throw new CLIError('`pb reject` is retired. Use `pb proposal reject <proposal-id> --reason "..."` instead.', {
70
- code: ErrorCode.VALIDATION_FAILED,
71
- category: 'validation',
72
- guidance: 'Usage: pb proposal reject <proposal-id> --reason "..."',
73
- });
74
- });
75
- }
76
- //# sourceMappingURL=registerProposalCommands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerProposalCommands.js","sourceRoot":"","sources":["../src/registerProposalCommands.ts"],"names":[],"mappings":"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"}