@proletariat/cli 0.3.71 → 0.3.72

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 (91) hide show
  1. package/dist/commands/action/create.d.ts +6 -2
  2. package/dist/commands/action/create.js +107 -40
  3. package/dist/commands/action/create.js.map +1 -1
  4. package/dist/commands/action/list.d.ts +1 -1
  5. package/dist/commands/action/list.js +12 -10
  6. package/dist/commands/action/list.js.map +1 -1
  7. package/dist/commands/action/run.js +2 -2
  8. package/dist/commands/action/run.js.map +1 -1
  9. package/dist/commands/action/show.js +24 -4
  10. package/dist/commands/action/show.js.map +1 -1
  11. package/dist/commands/action/update.d.ts +6 -2
  12. package/dist/commands/action/update.js +130 -52
  13. package/dist/commands/action/update.js.map +1 -1
  14. package/dist/commands/work/ready.js +4 -2
  15. package/dist/commands/work/ready.js.map +1 -1
  16. package/dist/commands/work/spawn.js +2 -2
  17. package/dist/commands/work/spawn.js.map +1 -1
  18. package/dist/commands/work/start.js +67 -23
  19. package/dist/commands/work/start.js.map +1 -1
  20. package/dist/commands/workflow/setup.d.ts +24 -0
  21. package/dist/commands/workflow/setup.js +346 -0
  22. package/dist/commands/workflow/setup.js.map +1 -0
  23. package/dist/commands/workflow-rule/create.d.ts +19 -0
  24. package/dist/commands/workflow-rule/create.js +140 -0
  25. package/dist/commands/workflow-rule/create.js.map +1 -0
  26. package/dist/commands/workflow-rule/delete.d.ts +18 -0
  27. package/dist/commands/workflow-rule/delete.js +72 -0
  28. package/dist/commands/workflow-rule/delete.js.map +1 -0
  29. package/dist/commands/workflow-rule/index.d.ts +16 -0
  30. package/dist/commands/workflow-rule/index.js +83 -0
  31. package/dist/commands/workflow-rule/index.js.map +1 -0
  32. package/dist/commands/workflow-rule/list.d.ts +17 -0
  33. package/dist/commands/workflow-rule/list.js +72 -0
  34. package/dist/commands/workflow-rule/list.js.map +1 -0
  35. package/dist/commands/workflow-rule/update.d.ts +22 -0
  36. package/dist/commands/workflow-rule/update.js +84 -0
  37. package/dist/commands/workflow-rule/update.js.map +1 -0
  38. package/dist/hooks/init.js +2 -4
  39. package/dist/hooks/init.js.map +1 -1
  40. package/dist/lib/database/drizzle-schema.d.ts +269 -4
  41. package/dist/lib/database/drizzle-schema.js +22 -2
  42. package/dist/lib/database/drizzle-schema.js.map +1 -1
  43. package/dist/lib/database/migrations/0003_actions_redesign.d.ts +15 -0
  44. package/dist/lib/database/migrations/0003_actions_redesign.js +105 -0
  45. package/dist/lib/database/migrations/0003_actions_redesign.js.map +1 -0
  46. package/dist/lib/database/migrations/0004_workflow_rules.d.ts +2 -0
  47. package/dist/lib/database/migrations/0004_workflow_rules.js +25 -0
  48. package/dist/lib/database/migrations/0004_workflow_rules.js.map +1 -0
  49. package/dist/lib/database/migrations/index.js +4 -0
  50. package/dist/lib/database/migrations/index.js.map +1 -1
  51. package/dist/lib/events/events.d.ts +13 -1
  52. package/dist/lib/execution/storage.d.ts +7 -1
  53. package/dist/lib/execution/storage.js +14 -6
  54. package/dist/lib/execution/storage.js.map +1 -1
  55. package/dist/lib/pmo/schema.d.ts +3 -1
  56. package/dist/lib/pmo/schema.js +25 -3
  57. package/dist/lib/pmo/schema.js.map +1 -1
  58. package/dist/lib/pmo/storage/actions.d.ts +5 -3
  59. package/dist/lib/pmo/storage/actions.js +89 -23
  60. package/dist/lib/pmo/storage/actions.js.map +1 -1
  61. package/dist/lib/pmo/storage/base.d.ts +5 -0
  62. package/dist/lib/pmo/storage/base.js +203 -20
  63. package/dist/lib/pmo/storage/base.js.map +1 -1
  64. package/dist/lib/pmo/storage/index.d.ts +9 -2
  65. package/dist/lib/pmo/storage/index.js +28 -3
  66. package/dist/lib/pmo/storage/index.js.map +1 -1
  67. package/dist/lib/pmo/storage/types.d.ts +19 -2
  68. package/dist/lib/pmo/storage/workflow-rules.d.ts +35 -0
  69. package/dist/lib/pmo/storage/workflow-rules.js +183 -0
  70. package/dist/lib/pmo/storage/workflow-rules.js.map +1 -0
  71. package/dist/lib/pmo/sync-manager.js +6 -0
  72. package/dist/lib/pmo/sync-manager.js.map +1 -1
  73. package/dist/lib/pmo/types.d.ts +59 -4
  74. package/dist/lib/pmo/types.js.map +1 -1
  75. package/dist/lib/telemetry/analytics.d.ts +25 -7
  76. package/dist/lib/telemetry/analytics.js +123 -58
  77. package/dist/lib/telemetry/analytics.js.map +1 -1
  78. package/dist/lib/work-lifecycle/action-chaining.d.ts +61 -0
  79. package/dist/lib/work-lifecycle/action-chaining.js +211 -0
  80. package/dist/lib/work-lifecycle/action-chaining.js.map +1 -0
  81. package/dist/lib/work-lifecycle/index.d.ts +3 -0
  82. package/dist/lib/work-lifecycle/index.js +3 -0
  83. package/dist/lib/work-lifecycle/index.js.map +1 -1
  84. package/dist/lib/work-lifecycle/post-execution.d.ts +54 -0
  85. package/dist/lib/work-lifecycle/post-execution.js +68 -0
  86. package/dist/lib/work-lifecycle/post-execution.js.map +1 -0
  87. package/dist/lib/work-lifecycle/rule-evaluator.d.ts +38 -0
  88. package/dist/lib/work-lifecycle/rule-evaluator.js +102 -0
  89. package/dist/lib/work-lifecycle/rule-evaluator.js.map +1 -0
  90. package/oclif.manifest.json +3198 -2707
  91. package/package.json +1 -1
@@ -0,0 +1,83 @@
1
+ import inquirer from 'inquirer';
2
+ import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
+ import { shouldOutputJson } from '../../lib/prompt-json.js';
4
+ export default class WorkflowRuleIndex extends PMOCommand {
5
+ static description = 'Interactive menu for workflow rule operations';
6
+ static aliases = ['workflow-rules'];
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %>',
9
+ ];
10
+ static flags = {
11
+ ...pmoBaseFlags,
12
+ };
13
+ getPMOOptions() {
14
+ return { promptIfMultiple: false };
15
+ }
16
+ async execute() {
17
+ const { flags } = await this.parse(WorkflowRuleIndex);
18
+ const jsonMode = shouldOutputJson(flags);
19
+ const menuChoices = [
20
+ { id: 'list', name: 'List all rules', command: 'prlt workflow-rule list --machine' },
21
+ { id: 'create', name: 'Create a rule', command: 'prlt workflow-rule create --machine' },
22
+ { id: 'update', name: 'Update a rule', command: 'prlt workflow-rule update --machine' },
23
+ { id: 'delete', name: 'Delete a rule', command: 'prlt workflow-rule delete --machine' },
24
+ { id: 'cancel', name: 'Cancel', command: '' },
25
+ ];
26
+ const message = 'Workflow Rules - What would you like to do?';
27
+ const action = await this.selectFromList({
28
+ message,
29
+ items: menuChoices,
30
+ getName: (c) => c.name,
31
+ getValue: (c) => c.id,
32
+ getCommand: (c) => c.command,
33
+ jsonMode: jsonMode ? { flags, commandName: 'workflow-rule' } : null,
34
+ });
35
+ if (action === 'cancel' || !action) {
36
+ return;
37
+ }
38
+ switch (action) {
39
+ case 'list':
40
+ await this.config.runCommand('workflow-rule:list', []);
41
+ break;
42
+ case 'create':
43
+ await this.config.runCommand('workflow-rule:create', []);
44
+ break;
45
+ case 'update': {
46
+ const ruleId = await this.selectRule('Select rule to update:');
47
+ if (ruleId) {
48
+ await this.config.runCommand('workflow-rule:update', [ruleId]);
49
+ }
50
+ break;
51
+ }
52
+ case 'delete': {
53
+ const ruleId = await this.selectRule('Select rule to delete:');
54
+ if (ruleId) {
55
+ await this.config.runCommand('workflow-rule:delete', [ruleId]);
56
+ }
57
+ break;
58
+ }
59
+ }
60
+ }
61
+ async selectRule(message) {
62
+ const rules = await this.storage.listWorkflowRules();
63
+ if (rules.length === 0) {
64
+ this.log('No workflow rules found.');
65
+ return null;
66
+ }
67
+ const { selected } = await this.prompt([{
68
+ type: 'list',
69
+ name: 'selected',
70
+ message,
71
+ choices: [
72
+ ...rules.map(r => ({
73
+ name: `${r.id} (${r.fromState || 'any'} → ${r.toState} → ${r.actionId})`,
74
+ value: r.id,
75
+ })),
76
+ new inquirer.Separator(),
77
+ { name: 'Cancel', value: null },
78
+ ],
79
+ }], null);
80
+ return selected;
81
+ }
82
+ }
83
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/workflow-rule/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { PMOCommand } from '../../lib/pmo/index.js';
2
+ export default class WorkflowRuleList extends PMOCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'to-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'from-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ 'action-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ trigger: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ enabled: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ execute(): Promise<void>;
16
+ private printRule;
17
+ }
@@ -0,0 +1,72 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
+ import { styles } from '../../lib/styles.js';
4
+ import { shouldOutputJson } from '../../lib/prompt-json.js';
5
+ export default class WorkflowRuleList extends PMOCommand {
6
+ static description = 'List workflow rules';
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %>',
9
+ '<%= config.bin %> <%= command.id %> --to-state "In Progress"',
10
+ '<%= config.bin %> <%= command.id %> --trigger on_enter',
11
+ '<%= config.bin %> <%= command.id %> --enabled',
12
+ ];
13
+ static flags = {
14
+ ...pmoBaseFlags,
15
+ 'to-state': Flags.string({
16
+ description: 'Filter by target state',
17
+ }),
18
+ 'from-state': Flags.string({
19
+ description: 'Filter by source state',
20
+ }),
21
+ 'action-id': Flags.string({
22
+ description: 'Filter by action ID',
23
+ }),
24
+ trigger: Flags.string({
25
+ description: 'Filter by trigger type',
26
+ options: ['manual', 'on_enter'],
27
+ }),
28
+ enabled: Flags.boolean({
29
+ description: 'Show only enabled rules',
30
+ allowNo: true,
31
+ }),
32
+ };
33
+ async execute() {
34
+ const { flags } = await this.parse(WorkflowRuleList);
35
+ const filter = {};
36
+ if (flags['to-state'])
37
+ filter.toState = flags['to-state'];
38
+ if (flags['from-state'])
39
+ filter.fromState = flags['from-state'];
40
+ if (flags['action-id'])
41
+ filter.actionId = flags['action-id'];
42
+ if (flags.trigger)
43
+ filter.trigger = flags.trigger;
44
+ if (flags.enabled !== undefined)
45
+ filter.enabled = flags.enabled;
46
+ const rules = await this.storage.listWorkflowRules(Object.keys(filter).length > 0 ? filter : undefined);
47
+ if (shouldOutputJson(flags)) {
48
+ this.log(JSON.stringify(rules, null, 2));
49
+ return;
50
+ }
51
+ if (rules.length === 0) {
52
+ this.log(styles.muted('\nNo workflow rules found.'));
53
+ this.log(styles.muted('Create one: prlt workflow-rule create'));
54
+ return;
55
+ }
56
+ this.log(`\n${styles.emphasis('Workflow Rules')}`);
57
+ this.log('═'.repeat(60));
58
+ for (const rule of rules) {
59
+ this.printRule(rule);
60
+ }
61
+ this.log('');
62
+ this.log(styles.muted('Create rule: prlt workflow-rule create'));
63
+ this.log('');
64
+ }
65
+ printRule(rule) {
66
+ const status = rule.enabled ? styles.success('enabled') : styles.muted('disabled');
67
+ this.log(`\n ${styles.emphasis(rule.id)} [${status}]`);
68
+ this.log(` ${styles.muted('From:')} ${rule.fromState || '(any)'} ${styles.muted('→')} ${styles.muted('To:')} ${rule.toState}`);
69
+ this.log(` ${styles.muted('Action:')} ${rule.actionId} ${styles.muted('| Trigger:')} ${rule.trigger}`);
70
+ }
71
+ }
72
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/workflow-rule/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { PMOCommand } from '../../lib/pmo/index.js';
2
+ export default class WorkflowRuleUpdate extends PMOCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'from-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'to-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'action-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ trigger: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ enabled: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ };
18
+ protected getPMOOptions(): {
19
+ promptIfMultiple: boolean;
20
+ };
21
+ execute(): Promise<void>;
22
+ }
@@ -0,0 +1,84 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
+ import { styles } from '../../lib/styles.js';
4
+ import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
+ export default class WorkflowRuleUpdate extends PMOCommand {
6
+ static description = 'Update a workflow rule';
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %> todo-implement --trigger on_enter',
9
+ '<%= config.bin %> <%= command.id %> todo-implement --no-enabled',
10
+ '<%= config.bin %> <%= command.id %> todo-implement --action-id continue',
11
+ ];
12
+ static args = {
13
+ id: Args.string({
14
+ description: 'Rule ID to update',
15
+ required: true,
16
+ }),
17
+ };
18
+ static flags = {
19
+ ...pmoBaseFlags,
20
+ 'from-state': Flags.string({
21
+ description: 'New source state (empty string = any state)',
22
+ }),
23
+ 'to-state': Flags.string({
24
+ description: 'New target state',
25
+ }),
26
+ 'action-id': Flags.string({
27
+ description: 'New action ID',
28
+ }),
29
+ trigger: Flags.string({
30
+ description: 'New trigger type',
31
+ options: ['manual', 'on_enter'],
32
+ }),
33
+ enabled: Flags.boolean({
34
+ description: 'Enable or disable the rule',
35
+ allowNo: true,
36
+ }),
37
+ };
38
+ getPMOOptions() {
39
+ return { promptIfMultiple: false };
40
+ }
41
+ async execute() {
42
+ const { args, flags } = await this.parse(WorkflowRuleUpdate);
43
+ const jsonMode = shouldOutputJson(flags);
44
+ const handleError = (code, message) => {
45
+ if (jsonMode) {
46
+ outputErrorAsJson(code, message, createMetadata('workflow-rule update', flags));
47
+ this.exit(1);
48
+ }
49
+ this.error(message);
50
+ };
51
+ const existing = await this.storage.getWorkflowRule(args.id);
52
+ if (!existing) {
53
+ return handleError('RULE_NOT_FOUND', `Workflow rule not found: ${args.id}`);
54
+ }
55
+ const changes = {};
56
+ if (flags['from-state'] !== undefined) {
57
+ changes.fromState = flags['from-state'] || undefined;
58
+ }
59
+ if (flags['to-state']) {
60
+ changes.toState = flags['to-state'];
61
+ }
62
+ if (flags['action-id']) {
63
+ changes.actionId = flags['action-id'];
64
+ }
65
+ if (flags.trigger) {
66
+ changes.trigger = flags.trigger;
67
+ }
68
+ if (flags.enabled !== undefined) {
69
+ changes.enabled = flags.enabled;
70
+ }
71
+ if (Object.keys(changes).length === 0) {
72
+ this.log(styles.muted('No changes specified. Use flags to specify changes.'));
73
+ return;
74
+ }
75
+ const rule = await this.storage.updateWorkflowRule(args.id, changes);
76
+ this.log(styles.success(`\nUpdated workflow rule "${styles.emphasis(rule.id)}"`));
77
+ this.log(` ${styles.muted('From:')} ${rule.fromState || '(any)'} ${styles.muted('→')} ${styles.muted('To:')} ${rule.toState}`);
78
+ this.log(` ${styles.muted('Action:')} ${rule.actionId}`);
79
+ this.log(` ${styles.muted('Trigger:')} ${rule.trigger}`);
80
+ this.log(` ${styles.muted('Enabled:')} ${rule.enabled ? 'Yes' : 'No'}`);
81
+ this.log('');
82
+ }
83
+ }
84
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/workflow-rule/update.ts"],"names":[],"mappings":"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"}
@@ -46,14 +46,12 @@ const hook = async function ({ id, argv, config }) {
46
46
  argv?.includes('--version') || argv?.includes('-v')) {
47
47
  return;
48
48
  }
49
- // Initialize analytics (async, non-blocking on failure)
49
+ // Initialize analytics fire-and-forget, events go to disk queue
50
50
  // Store command start time for duration tracking in postrun hook
51
51
  ;
52
52
  globalThis.__prlt_command_start = Date.now();
53
53
  globalThis.__prlt_command_id = id;
54
- initAnalytics(config.version).catch(() => {
55
- // Analytics initialization should never block CLI execution
56
- });
54
+ initAnalytics(config.version);
57
55
  if (shouldValidateNativeModules(id)) {
58
56
  await validateBetterSqlite3NativeBinding({ context: `command "${id}"` });
59
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAEhF;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAiB,KAAK,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7D,6DAA6D;IAC7D,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEhC,mEAAmE;IACnE,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACvF,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;IAE1G,sEAAsE;IACtE,2EAA2E;IAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,OAAM;IACR,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC1D,OAAM;IACR,CAAC;IAED,yEAAyE;IACzE,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,EAAE,CAAC;QAChD,OAAM;IACR,CAAC;IAED,qFAAqF;IACrF,uEAAuE;IACvE,uDAAuD;IACvD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9D,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,OAAM;IACR,CAAC;IAED,kEAAkE;IAClE,iEAAiE;IACjE,CAAC;IAAC,UAAsC,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CACzE;IAAC,UAAsC,CAAC,iBAAiB,GAAG,EAAE,CAAA;IAC/D,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE7B,IAAI,2BAA2B,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,kCAAkC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED,uEAAuE;IACvE,uFAAuF;IACvF,8EAA8E;IAC9E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACtD,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAA;QACpC,sBAAsB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,uEAAuE;IACvE,uCAAuC;IACvC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QACzB,uDAAuD;QACvD,IAAI,CAAC,EAAE,IAAI,eAAe,EAAE,EAAE,CAAC;YAC7B,qDAAqD;YACrD,sDAAsD;YACtD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3C,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;YAC1B,MAAM,iBAAiB,EAAE,CAAA;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,OAAM;IACR,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC,mBAAmB,IAAI,eAAe,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAA;QAE5F,qDAAqD;QACrD,sDAAsD;QACtD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAC3C,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;QAE1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAC,CAAA;QACpF,MAAM,iBAAiB,EAAE,CAAA;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAED,SAAS,2BAA2B,CAAC,EAAW;IAC9C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,CAAC,CACN,EAAE,KAAK,MAAM;QACb,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QACtB,EAAE,KAAK,SAAS;QAChB,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACzB,EAAE,KAAK,cAAc;QACrB,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAC/B,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,yDAAyD;IACzD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;IAC9B,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAA;IACd,CAAC;IAED,6DAA6D;IAC7D,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAA;IACzC,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,eAAe,IAAI,CAAA"}
@@ -4570,8 +4570,8 @@ export declare const pmoActions: import("drizzle-orm/sqlite-core").SQLiteTableWi
4570
4570
  identity: undefined;
4571
4571
  generated: undefined;
4572
4572
  }, object>;
4573
- suggestedForCategories: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4574
- name: "suggested_for_categories";
4573
+ fromState: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4574
+ name: "from_state";
4575
4575
  tableName: "pmo_actions";
4576
4576
  dataType: "string";
4577
4577
  columnType: "SQLiteText";
@@ -4587,8 +4587,93 @@ export declare const pmoActions: import("drizzle-orm/sqlite-core").SQLiteTableWi
4587
4587
  identity: undefined;
4588
4588
  generated: undefined;
4589
4589
  }, object>;
4590
- defaultMoveToCategory: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4591
- name: "default_move_to_category";
4590
+ toState: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4591
+ name: "to_state";
4592
+ tableName: "pmo_actions";
4593
+ dataType: "string";
4594
+ columnType: "SQLiteText";
4595
+ data: string;
4596
+ driverParam: string;
4597
+ notNull: false;
4598
+ hasDefault: false;
4599
+ isPrimaryKey: false;
4600
+ isAutoincrement: false;
4601
+ hasRuntimeDefault: false;
4602
+ enumValues: [string, ...string[]];
4603
+ baseColumn: never;
4604
+ identity: undefined;
4605
+ generated: undefined;
4606
+ }, object>;
4607
+ executor: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4608
+ name: "executor";
4609
+ tableName: "pmo_actions";
4610
+ dataType: "string";
4611
+ columnType: "SQLiteText";
4612
+ data: string;
4613
+ driverParam: string;
4614
+ notNull: false;
4615
+ hasDefault: false;
4616
+ isPrimaryKey: false;
4617
+ isAutoincrement: false;
4618
+ hasRuntimeDefault: false;
4619
+ enumValues: [string, ...string[]];
4620
+ baseColumn: never;
4621
+ identity: undefined;
4622
+ generated: undefined;
4623
+ }, object>;
4624
+ environment: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4625
+ name: "environment";
4626
+ tableName: "pmo_actions";
4627
+ dataType: "string";
4628
+ columnType: "SQLiteText";
4629
+ data: string;
4630
+ driverParam: string;
4631
+ notNull: false;
4632
+ hasDefault: false;
4633
+ isPrimaryKey: false;
4634
+ isAutoincrement: false;
4635
+ hasRuntimeDefault: false;
4636
+ enumValues: [string, ...string[]];
4637
+ baseColumn: never;
4638
+ identity: undefined;
4639
+ generated: undefined;
4640
+ }, object>;
4641
+ permissionMode: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4642
+ name: "permission_mode";
4643
+ tableName: "pmo_actions";
4644
+ dataType: "string";
4645
+ columnType: "SQLiteText";
4646
+ data: string;
4647
+ driverParam: string;
4648
+ notNull: false;
4649
+ hasDefault: false;
4650
+ isPrimaryKey: false;
4651
+ isAutoincrement: false;
4652
+ hasRuntimeDefault: false;
4653
+ enumValues: [string, ...string[]];
4654
+ baseColumn: never;
4655
+ identity: undefined;
4656
+ generated: undefined;
4657
+ }, object>;
4658
+ timeout: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4659
+ name: "timeout";
4660
+ tableName: "pmo_actions";
4661
+ dataType: "number";
4662
+ columnType: "SQLiteInteger";
4663
+ data: number;
4664
+ driverParam: number;
4665
+ notNull: false;
4666
+ hasDefault: false;
4667
+ isPrimaryKey: false;
4668
+ isAutoincrement: false;
4669
+ hasRuntimeDefault: false;
4670
+ enumValues: undefined;
4671
+ baseColumn: never;
4672
+ identity: undefined;
4673
+ generated: undefined;
4674
+ }, object>;
4675
+ model: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4676
+ name: "model";
4592
4677
  tableName: "pmo_actions";
4593
4678
  dataType: "string";
4594
4679
  columnType: "SQLiteText";
@@ -4621,6 +4706,23 @@ export declare const pmoActions: import("drizzle-orm/sqlite-core").SQLiteTableWi
4621
4706
  identity: undefined;
4622
4707
  generated: undefined;
4623
4708
  }, object>;
4709
+ isDefault: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4710
+ name: "is_default";
4711
+ tableName: "pmo_actions";
4712
+ dataType: "boolean";
4713
+ columnType: "SQLiteBoolean";
4714
+ data: boolean;
4715
+ driverParam: number;
4716
+ notNull: true;
4717
+ hasDefault: true;
4718
+ isPrimaryKey: false;
4719
+ isAutoincrement: false;
4720
+ hasRuntimeDefault: false;
4721
+ enumValues: undefined;
4722
+ baseColumn: never;
4723
+ identity: undefined;
4724
+ generated: undefined;
4725
+ }, object>;
4624
4726
  isBuiltin: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4625
4727
  name: "is_builtin";
4626
4728
  tableName: "pmo_actions";
@@ -4672,6 +4774,169 @@ export declare const pmoActions: import("drizzle-orm/sqlite-core").SQLiteTableWi
4672
4774
  identity: undefined;
4673
4775
  generated: undefined;
4674
4776
  }, object>;
4777
+ updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4778
+ name: "updated_at";
4779
+ tableName: "pmo_actions";
4780
+ dataType: "string";
4781
+ columnType: "SQLiteText";
4782
+ data: string;
4783
+ driverParam: string;
4784
+ notNull: false;
4785
+ hasDefault: false;
4786
+ isPrimaryKey: false;
4787
+ isAutoincrement: false;
4788
+ hasRuntimeDefault: false;
4789
+ enumValues: [string, ...string[]];
4790
+ baseColumn: never;
4791
+ identity: undefined;
4792
+ generated: undefined;
4793
+ }, object>;
4794
+ };
4795
+ dialect: "sqlite";
4796
+ }>;
4797
+ /**
4798
+ * Workflow rules (state-to-action wiring)
4799
+ */
4800
+ export declare const pmoWorkflowRules: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
4801
+ name: "pmo_workflow_rules";
4802
+ schema: undefined;
4803
+ columns: {
4804
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4805
+ name: "id";
4806
+ tableName: "pmo_workflow_rules";
4807
+ dataType: "string";
4808
+ columnType: "SQLiteText";
4809
+ data: string;
4810
+ driverParam: string;
4811
+ notNull: true;
4812
+ hasDefault: false;
4813
+ isPrimaryKey: true;
4814
+ isAutoincrement: false;
4815
+ hasRuntimeDefault: false;
4816
+ enumValues: [string, ...string[]];
4817
+ baseColumn: never;
4818
+ identity: undefined;
4819
+ generated: undefined;
4820
+ }, object>;
4821
+ fromState: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4822
+ name: "from_state";
4823
+ tableName: "pmo_workflow_rules";
4824
+ dataType: "string";
4825
+ columnType: "SQLiteText";
4826
+ data: string;
4827
+ driverParam: string;
4828
+ notNull: false;
4829
+ hasDefault: false;
4830
+ isPrimaryKey: false;
4831
+ isAutoincrement: false;
4832
+ hasRuntimeDefault: false;
4833
+ enumValues: [string, ...string[]];
4834
+ baseColumn: never;
4835
+ identity: undefined;
4836
+ generated: undefined;
4837
+ }, object>;
4838
+ toState: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4839
+ name: "to_state";
4840
+ tableName: "pmo_workflow_rules";
4841
+ dataType: "string";
4842
+ columnType: "SQLiteText";
4843
+ data: string;
4844
+ driverParam: string;
4845
+ notNull: true;
4846
+ hasDefault: false;
4847
+ isPrimaryKey: false;
4848
+ isAutoincrement: false;
4849
+ hasRuntimeDefault: false;
4850
+ enumValues: [string, ...string[]];
4851
+ baseColumn: never;
4852
+ identity: undefined;
4853
+ generated: undefined;
4854
+ }, object>;
4855
+ actionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4856
+ name: "action_id";
4857
+ tableName: "pmo_workflow_rules";
4858
+ dataType: "string";
4859
+ columnType: "SQLiteText";
4860
+ data: string;
4861
+ driverParam: string;
4862
+ notNull: true;
4863
+ hasDefault: false;
4864
+ isPrimaryKey: false;
4865
+ isAutoincrement: false;
4866
+ hasRuntimeDefault: false;
4867
+ enumValues: [string, ...string[]];
4868
+ baseColumn: never;
4869
+ identity: undefined;
4870
+ generated: undefined;
4871
+ }, object>;
4872
+ trigger: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4873
+ name: "trigger";
4874
+ tableName: "pmo_workflow_rules";
4875
+ dataType: "string";
4876
+ columnType: "SQLiteText";
4877
+ data: string;
4878
+ driverParam: string;
4879
+ notNull: true;
4880
+ hasDefault: true;
4881
+ isPrimaryKey: false;
4882
+ isAutoincrement: false;
4883
+ hasRuntimeDefault: false;
4884
+ enumValues: [string, ...string[]];
4885
+ baseColumn: never;
4886
+ identity: undefined;
4887
+ generated: undefined;
4888
+ }, object>;
4889
+ enabled: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4890
+ name: "enabled";
4891
+ tableName: "pmo_workflow_rules";
4892
+ dataType: "boolean";
4893
+ columnType: "SQLiteBoolean";
4894
+ data: boolean;
4895
+ driverParam: number;
4896
+ notNull: true;
4897
+ hasDefault: true;
4898
+ isPrimaryKey: false;
4899
+ isAutoincrement: false;
4900
+ hasRuntimeDefault: false;
4901
+ enumValues: undefined;
4902
+ baseColumn: never;
4903
+ identity: undefined;
4904
+ generated: undefined;
4905
+ }, object>;
4906
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4907
+ name: "created_at";
4908
+ tableName: "pmo_workflow_rules";
4909
+ dataType: "string";
4910
+ columnType: "SQLiteText";
4911
+ data: string;
4912
+ driverParam: string;
4913
+ notNull: false;
4914
+ hasDefault: true;
4915
+ isPrimaryKey: false;
4916
+ isAutoincrement: false;
4917
+ hasRuntimeDefault: false;
4918
+ enumValues: [string, ...string[]];
4919
+ baseColumn: never;
4920
+ identity: undefined;
4921
+ generated: undefined;
4922
+ }, object>;
4923
+ updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
4924
+ name: "updated_at";
4925
+ tableName: "pmo_workflow_rules";
4926
+ dataType: "string";
4927
+ columnType: "SQLiteText";
4928
+ data: string;
4929
+ driverParam: string;
4930
+ notNull: false;
4931
+ hasDefault: false;
4932
+ isPrimaryKey: false;
4933
+ isAutoincrement: false;
4934
+ hasRuntimeDefault: false;
4935
+ enumValues: [string, ...string[]];
4936
+ baseColumn: never;
4937
+ identity: undefined;
4938
+ generated: undefined;
4939
+ }, object>;
4675
4940
  };
4676
4941
  dialect: "sqlite";
4677
4942
  }>;