@quickstartsoft/ql 0.0.260330090824-main.2d073ec

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 (90) hide show
  1. package/bin/run.js +5 -0
  2. package/dist/__tests__/bootstrap-infrastructure.test.d.ts +2 -0
  3. package/dist/__tests__/bootstrap-infrastructure.test.d.ts.map +1 -0
  4. package/dist/__tests__/bootstrap-infrastructure.test.js +52 -0
  5. package/dist/__tests__/bootstrap-infrastructure.test.js.map +1 -0
  6. package/dist/__tests__/individual-checks.test.d.ts +2 -0
  7. package/dist/__tests__/individual-checks.test.d.ts.map +1 -0
  8. package/dist/__tests__/individual-checks.test.js +74 -0
  9. package/dist/__tests__/individual-checks.test.js.map +1 -0
  10. package/dist/__tests__/preExecute.test.d.ts +2 -0
  11. package/dist/__tests__/preExecute.test.d.ts.map +1 -0
  12. package/dist/__tests__/preExecute.test.js +59 -0
  13. package/dist/__tests__/preExecute.test.js.map +1 -0
  14. package/dist/__tests__/prerequisite-checks.test.d.ts +2 -0
  15. package/dist/__tests__/prerequisite-checks.test.d.ts.map +1 -0
  16. package/dist/__tests__/prerequisite-checks.test.js +89 -0
  17. package/dist/__tests__/prerequisite-checks.test.js.map +1 -0
  18. package/dist/__tests__/printPrerequisiteFailures.test.d.ts +2 -0
  19. package/dist/__tests__/printPrerequisiteFailures.test.d.ts.map +1 -0
  20. package/dist/__tests__/printPrerequisiteFailures.test.js +69 -0
  21. package/dist/__tests__/printPrerequisiteFailures.test.js.map +1 -0
  22. package/dist/__tests__/workflow-commands.test.d.ts +2 -0
  23. package/dist/__tests__/workflow-commands.test.d.ts.map +1 -0
  24. package/dist/__tests__/workflow-commands.test.js +93 -0
  25. package/dist/__tests__/workflow-commands.test.js.map +1 -0
  26. package/dist/bootstrapInfrastructure.d.ts +2 -0
  27. package/dist/bootstrapInfrastructure.d.ts.map +1 -0
  28. package/dist/bootstrapInfrastructure.js +7 -0
  29. package/dist/bootstrapInfrastructure.js.map +1 -0
  30. package/dist/checkClaudeCli.d.ts +3 -0
  31. package/dist/checkClaudeCli.d.ts.map +1 -0
  32. package/dist/checkClaudeCli.js +25 -0
  33. package/dist/checkClaudeCli.js.map +1 -0
  34. package/dist/checkDocker.d.ts +3 -0
  35. package/dist/checkDocker.d.ts.map +1 -0
  36. package/dist/checkDocker.js +14 -0
  37. package/dist/checkDocker.js.map +1 -0
  38. package/dist/checkGit.d.ts +3 -0
  39. package/dist/checkGit.d.ts.map +1 -0
  40. package/dist/checkGit.js +14 -0
  41. package/dist/checkGit.js.map +1 -0
  42. package/dist/checkPrerequisites.d.ts +3 -0
  43. package/dist/checkPrerequisites.d.ts.map +1 -0
  44. package/dist/checkPrerequisites.js +17 -0
  45. package/dist/checkPrerequisites.js.map +1 -0
  46. package/dist/commands/bugfix/index.d.ts +14 -0
  47. package/dist/commands/bugfix/index.d.ts.map +1 -0
  48. package/dist/commands/bugfix/index.js +34 -0
  49. package/dist/commands/bugfix/index.js.map +1 -0
  50. package/dist/commands/feature/index.d.ts +14 -0
  51. package/dist/commands/feature/index.d.ts.map +1 -0
  52. package/dist/commands/feature/index.js +34 -0
  53. package/dist/commands/feature/index.js.map +1 -0
  54. package/dist/commands/spec-driven/index.d.ts +13 -0
  55. package/dist/commands/spec-driven/index.d.ts.map +1 -0
  56. package/dist/commands/spec-driven/index.js +32 -0
  57. package/dist/commands/spec-driven/index.js.map +1 -0
  58. package/dist/commands/test/index.d.ts +14 -0
  59. package/dist/commands/test/index.d.ts.map +1 -0
  60. package/dist/commands/test/index.js +34 -0
  61. package/dist/commands/test/index.js.map +1 -0
  62. package/dist/ensureTemporalServer.d.ts +2 -0
  63. package/dist/ensureTemporalServer.d.ts.map +1 -0
  64. package/dist/ensureTemporalServer.js +69 -0
  65. package/dist/ensureTemporalServer.js.map +1 -0
  66. package/dist/ensureWorkerProcess.d.ts +2 -0
  67. package/dist/ensureWorkerProcess.d.ts.map +1 -0
  68. package/dist/ensureWorkerProcess.js +54 -0
  69. package/dist/ensureWorkerProcess.js.map +1 -0
  70. package/dist/execCommand.d.ts +7 -0
  71. package/dist/execCommand.d.ts.map +1 -0
  72. package/dist/execCommand.js +13 -0
  73. package/dist/execCommand.js.map +1 -0
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +2 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/preExecute.d.ts +2 -0
  79. package/dist/preExecute.d.ts.map +1 -0
  80. package/dist/preExecute.js +12 -0
  81. package/dist/preExecute.js.map +1 -0
  82. package/dist/printPrerequisiteFailures.d.ts +3 -0
  83. package/dist/printPrerequisiteFailures.d.ts.map +1 -0
  84. package/dist/printPrerequisiteFailures.js +21 -0
  85. package/dist/printPrerequisiteFailures.js.map +1 -0
  86. package/dist/startWorkflow.d.ts +12 -0
  87. package/dist/startWorkflow.d.ts.map +1 -0
  88. package/dist/startWorkflow.js +22 -0
  89. package/dist/startWorkflow.js.map +1 -0
  90. package/package.json +56 -0
@@ -0,0 +1,14 @@
1
+ import { execCommand } from './execCommand.js';
2
+ export async function checkDocker() {
3
+ try {
4
+ await execCommand('docker', ['info']);
5
+ return { available: true };
6
+ }
7
+ catch {
8
+ return {
9
+ available: false,
10
+ message: 'Docker is not running. Install Docker Desktop from https://docker.com and ensure the daemon is started.',
11
+ };
12
+ }
13
+ }
14
+ //# sourceMappingURL=checkDocker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkDocker.js","sourceRoot":"","sources":["../src/checkDocker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,OAAO,EACL,yGAAyG;SAC5G,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GitCheckResult } from '@quickstartsoft/ql-shared-types';
2
+ export declare function checkGit(): Promise<GitCheckResult>;
3
+ //# sourceMappingURL=checkGit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkGit.d.ts","sourceRoot":"","sources":["../src/checkGit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE,wBAAsB,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,CAUxD"}
@@ -0,0 +1,14 @@
1
+ import { execCommand } from './execCommand.js';
2
+ export async function checkGit() {
3
+ try {
4
+ await execCommand('git', ['--version']);
5
+ return { available: true };
6
+ }
7
+ catch {
8
+ return {
9
+ available: false,
10
+ message: 'Git not found. Install from https://git-scm.com',
11
+ };
12
+ }
13
+ }
14
+ //# sourceMappingURL=checkGit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkGit.js","sourceRoot":"","sources":["../src/checkGit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACxC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,iDAAiD;SAC3D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PrerequisiteCheckResult } from '@quickstartsoft/ql-shared-types';
2
+ export declare function checkPrerequisites(): Promise<PrerequisiteCheckResult>;
3
+ //# sourceMappingURL=checkPrerequisites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPrerequisites.d.ts","sourceRoot":"","sources":["../src/checkPrerequisites.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAM/E,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAa3E"}
@@ -0,0 +1,17 @@
1
+ import { checkClaudeCli } from './checkClaudeCli.js';
2
+ import { checkDocker } from './checkDocker.js';
3
+ import { checkGit } from './checkGit.js';
4
+ export async function checkPrerequisites() {
5
+ const [docker, claudeCli, git] = await Promise.all([
6
+ checkDocker(),
7
+ checkClaudeCli(),
8
+ checkGit(),
9
+ ]);
10
+ return {
11
+ docker,
12
+ claudeCli,
13
+ git,
14
+ allPassed: docker.available && claudeCli.available && claudeCli.authenticated && git.available,
15
+ };
16
+ }
17
+ //# sourceMappingURL=checkPrerequisites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPrerequisites.js","sourceRoot":"","sources":["../src/checkPrerequisites.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjD,WAAW,EAAE;QACb,cAAc,EAAE;QAChB,QAAQ,EAAE;KACX,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,SAAS;QACT,GAAG;QACH,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,aAAa,IAAI,GAAG,CAAC,SAAS;KAC/F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class BugfixCommand extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ repoUrl: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'base-branch': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'bug-report': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/bugfix/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AAOnD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,OAAgB,WAAW,SAAoC;IAE/D,OAAgB,QAAQ,WAEtB;IAEF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;MAGnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB3B"}
@@ -0,0 +1,34 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ import { preExecute } from '../../preExecute.js';
3
+ import { startWorkflow } from '../../startWorkflow.js';
4
+ // oclif requires default export for command discovery
5
+ export default class BugfixCommand extends Command {
6
+ static description = 'Start a bugfix workflow (MW03)';
7
+ static examples = [
8
+ '<%= config.bin %> bugfix https://github.com/org/repo --base-branch=main --bug-report="Login fails with 500 error"',
9
+ ];
10
+ static args = {
11
+ repoUrl: Args.string({ description: 'Repository URL', required: true }),
12
+ };
13
+ static flags = {
14
+ 'base-branch': Flags.string({ description: 'Base branch name' }),
15
+ 'bug-report': Flags.string({ description: 'Bug report description', required: true }),
16
+ };
17
+ async run() {
18
+ await preExecute();
19
+ const { args, flags } = await this.parse(BugfixCommand);
20
+ const input = {
21
+ baseBranch: flags['base-branch'],
22
+ bugReport: flags['bug-report'],
23
+ repoUrl: args.repoUrl,
24
+ };
25
+ const { workflowId, runId } = await startWorkflow({
26
+ args: [input],
27
+ workflowId: `mw03-${Date.now()}`,
28
+ workflowName: 'bugfixWorkflow',
29
+ });
30
+ this.log(`Workflow started: ${workflowId}`);
31
+ this.log(`Run ID: ${runId}`);
32
+ }
33
+ }
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/bugfix/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,sDAAsD;AACtD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAU,WAAW,GAAG,gCAAgC,CAAC;IAE/D,MAAM,CAAU,QAAQ,GAAG;QACzB,mHAAmH;KACpH,CAAC;IAEF,MAAM,CAAU,IAAI,GAAG;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACxE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAChE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACtF,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAExD,MAAM,KAAK,GAAwB;YACjC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;YAChC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;QAEF,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC;YAChD,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;YAChC,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class FeatureCommand extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ repoUrl: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'base-branch': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ requirement: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/feature/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AAOnD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,OAAgB,WAAW,SAAiD;IAE5E,OAAgB,QAAQ,WAEtB;IAEF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;MAGnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB3B"}
@@ -0,0 +1,34 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ import { preExecute } from '../../preExecute.js';
3
+ import { startWorkflow } from '../../startWorkflow.js';
4
+ // oclif requires default export for command discovery
5
+ export default class FeatureCommand extends Command {
6
+ static description = 'Start a feature development workflow (MW01)';
7
+ static examples = [
8
+ '<%= config.bin %> feature https://github.com/org/repo --base-branch=main --requirement="Add login page"',
9
+ ];
10
+ static args = {
11
+ repoUrl: Args.string({ description: 'Repository URL', required: true }),
12
+ };
13
+ static flags = {
14
+ 'base-branch': Flags.string({ description: 'Base branch name' }),
15
+ requirement: Flags.string({ description: 'Feature requirement description', required: true }),
16
+ };
17
+ async run() {
18
+ await preExecute();
19
+ const { args, flags } = await this.parse(FeatureCommand);
20
+ const input = {
21
+ baseBranch: flags['base-branch'],
22
+ repoUrl: args.repoUrl,
23
+ requirement: flags.requirement,
24
+ };
25
+ const { workflowId, runId } = await startWorkflow({
26
+ args: [input],
27
+ workflowId: `mw01-${Date.now()}`,
28
+ workflowName: 'featureWorkflow',
29
+ });
30
+ this.log(`Workflow started: ${workflowId}`);
31
+ this.log(`Run ID: ${runId}`);
32
+ }
33
+ }
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/feature/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,sDAAsD;AACtD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,MAAM,CAAU,WAAW,GAAG,6CAA6C,CAAC;IAE5E,MAAM,CAAU,QAAQ,GAAG;QACzB,yGAAyG;KAC1G,CAAC;IAEF,MAAM,CAAU,IAAI,GAAG;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACxE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAChE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC9F,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAyB;YAClC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;YAChC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;QAEF,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC;YAChD,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;YAChC,YAAY,EAAE,iBAAiB;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SpecDrivenCommand extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ repoUrl: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'base-branch': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/spec-driven/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AAOnD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,OAAO;IACpD,OAAgB,WAAW,SAAqD;IAEhF,OAAgB,QAAQ,WAEtB;IAEF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB3B"}
@@ -0,0 +1,32 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ import { preExecute } from '../../preExecute.js';
3
+ import { startWorkflow } from '../../startWorkflow.js';
4
+ // oclif requires default export for command discovery
5
+ export default class SpecDrivenCommand extends Command {
6
+ static description = 'Start a spec-driven development workflow (MW04)';
7
+ static examples = [
8
+ '<%= config.bin %> spec-driven https://github.com/org/repo --base-branch=main',
9
+ ];
10
+ static args = {
11
+ repoUrl: Args.string({ description: 'Repository URL', required: true }),
12
+ };
13
+ static flags = {
14
+ 'base-branch': Flags.string({ description: 'Base branch name' }),
15
+ };
16
+ async run() {
17
+ await preExecute();
18
+ const { args, flags } = await this.parse(SpecDrivenCommand);
19
+ const input = {
20
+ baseBranch: flags['base-branch'],
21
+ repoUrl: args.repoUrl,
22
+ };
23
+ const { workflowId, runId } = await startWorkflow({
24
+ args: [input],
25
+ workflowId: `mw04-${Date.now()}`,
26
+ workflowName: 'specDrivenWorkflow',
27
+ });
28
+ this.log(`Workflow started: ${workflowId}`);
29
+ this.log(`Run ID: ${runId}`);
30
+ }
31
+ }
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/spec-driven/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,sDAAsD;AACtD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,OAAO;IACpD,MAAM,CAAU,WAAW,GAAG,iDAAiD,CAAC;IAEhF,MAAM,CAAU,QAAQ,GAAG;QACzB,8EAA8E;KAC/E,CAAC;IAEF,MAAM,CAAU,IAAI,GAAG;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACxE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;KACjE,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE5D,MAAM,KAAK,GAA+B;YACxC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;YAChC,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;QAEF,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC;YAChD,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;YAChC,YAAY,EAAE,oBAAoB;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class TestCommand extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ repoUrl: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'base-branch': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ requirement: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AAOnD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,OAAgB,WAAW,SAA0C;IAErE,OAAgB,QAAQ,WAEtB;IAEF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;MAGnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB3B"}
@@ -0,0 +1,34 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ import { preExecute } from '../../preExecute.js';
3
+ import { startWorkflow } from '../../startWorkflow.js';
4
+ // oclif requires default export for command discovery
5
+ export default class TestCommand extends Command {
6
+ static description = 'Start a test writing workflow (MW02)';
7
+ static examples = [
8
+ '<%= config.bin %> test https://github.com/org/repo --base-branch=main --requirement="Add unit tests for auth module"',
9
+ ];
10
+ static args = {
11
+ repoUrl: Args.string({ description: 'Repository URL', required: true }),
12
+ };
13
+ static flags = {
14
+ 'base-branch': Flags.string({ description: 'Base branch name' }),
15
+ 'requirement': Flags.string({ description: 'Test requirement description', required: true }),
16
+ };
17
+ async run() {
18
+ await preExecute();
19
+ const { args, flags } = await this.parse(TestCommand);
20
+ const input = {
21
+ baseBranch: flags['base-branch'],
22
+ repoUrl: args.repoUrl,
23
+ testRequirement: flags['requirement'],
24
+ };
25
+ const { workflowId, runId } = await startWorkflow({
26
+ args: [input],
27
+ workflowId: `mw02-${Date.now()}`,
28
+ workflowName: 'testWorkflow',
29
+ });
30
+ this.log(`Workflow started: ${workflowId}`);
31
+ this.log(`Run ID: ${runId}`);
32
+ }
33
+ }
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,sDAAsD;AACtD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAU,WAAW,GAAG,sCAAsC,CAAC;IAErE,MAAM,CAAU,QAAQ,GAAG;QACzB,sHAAsH;KACvH,CAAC;IAEF,MAAM,CAAU,IAAI,GAAG;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACxE,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAChE,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC7F,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAsB;YAC/B,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;YAChC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC;SACtC,CAAC;QAEF,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC;YAChD,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;YAChC,YAAY,EAAE,cAAc;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function ensureTemporalServer(): Promise<void>;
2
+ //# sourceMappingURL=ensureTemporalServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureTemporalServer.d.ts","sourceRoot":"","sources":["../src/ensureTemporalServer.ts"],"names":[],"mappings":"AAkEA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ1D"}
@@ -0,0 +1,69 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { createConnection } from 'node:net';
3
+ import { resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ const TEMPORAL_CONTAINER_NAME = 'temporal';
6
+ const HEALTH_CHECK_PORT = 7233;
7
+ const HEALTH_CHECK_INTERVAL_MS = 1_000;
8
+ const HEALTH_CHECK_MAX_ATTEMPTS = 30;
9
+ const DOCKER_COMPOSE_TIMEOUT_MS = 60_000;
10
+ function findDockerComposePath() {
11
+ const currentDir = fileURLToPath(new URL('.', import.meta.url));
12
+ return resolve(currentDir, '..', '..', '..', 'docker-compose.yml');
13
+ }
14
+ function execAsync(command, args, timeoutMs = 10_000) {
15
+ return new Promise((res, rej) => {
16
+ execFile(command, args, { timeout: timeoutMs }, (error, stdout) => {
17
+ if (error) {
18
+ rej(error);
19
+ return;
20
+ }
21
+ res(stdout.toString().trim());
22
+ });
23
+ });
24
+ }
25
+ async function isTemporalRunning() {
26
+ try {
27
+ const output = await execAsync('docker', [
28
+ 'ps', '--filter', `name=${TEMPORAL_CONTAINER_NAME}`, '--format', '{{.Names}}',
29
+ ]);
30
+ return output.split('\n').some((name) => name.includes(TEMPORAL_CONTAINER_NAME));
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ function checkPort(port) {
37
+ return new Promise((res) => {
38
+ const socket = createConnection({ port, host: 'localhost' }, () => {
39
+ socket.destroy();
40
+ res(true);
41
+ });
42
+ socket.on('error', () => {
43
+ socket.destroy();
44
+ res(false);
45
+ });
46
+ socket.setTimeout(1_000, () => {
47
+ socket.destroy();
48
+ res(false);
49
+ });
50
+ });
51
+ }
52
+ async function waitForTemporal() {
53
+ for (let attempt = 0; attempt < HEALTH_CHECK_MAX_ATTEMPTS; attempt++) {
54
+ if (await checkPort(HEALTH_CHECK_PORT)) {
55
+ return;
56
+ }
57
+ await new Promise((r) => setTimeout(r, HEALTH_CHECK_INTERVAL_MS));
58
+ }
59
+ throw new Error(`Temporal server did not become ready on port ${HEALTH_CHECK_PORT}`);
60
+ }
61
+ export async function ensureTemporalServer() {
62
+ if (await isTemporalRunning()) {
63
+ return;
64
+ }
65
+ const composePath = findDockerComposePath();
66
+ await execAsync('docker', ['compose', '-f', composePath, 'up', '-d'], DOCKER_COMPOSE_TIMEOUT_MS);
67
+ await waitForTemporal();
68
+ }
69
+ //# sourceMappingURL=ensureTemporalServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureTemporalServer.js","sourceRoot":"","sources":["../src/ensureTemporalServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function ensureWorkerProcess(): Promise<void>;
2
+ //# sourceMappingURL=ensureWorkerProcess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureWorkerProcess.d.ts","sourceRoot":"","sources":["../src/ensureWorkerProcess.ts"],"names":[],"mappings":"AAwDA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMzD"}
@@ -0,0 +1,54 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ const QL_DIR = join(homedir(), '.ql');
6
+ const PID_FILE = join(QL_DIR, 'worker.pid');
7
+ const WORKER_SCRIPT = `
8
+ import("@quickstartsoft/ql-worker").then(m => m.runWorker()).catch(e => { console.error(e); process.exit(1); });
9
+ `;
10
+ function isProcessAlive(pid) {
11
+ try {
12
+ process.kill(pid, 0);
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ async function readPidFile() {
20
+ try {
21
+ const content = await readFile(PID_FILE, 'utf-8');
22
+ const pid = parseInt(content.trim(), 10);
23
+ return Number.isNaN(pid) ? null : pid;
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ async function isWorkerRunning() {
30
+ const pid = await readPidFile();
31
+ if (pid === null) {
32
+ return false;
33
+ }
34
+ return isProcessAlive(pid);
35
+ }
36
+ async function spawnWorker() {
37
+ await mkdir(QL_DIR, { recursive: true });
38
+ const child = spawn('node', ['--input-type=module', '-e', WORKER_SCRIPT], {
39
+ detached: true,
40
+ stdio: 'ignore',
41
+ });
42
+ child.unref();
43
+ if (child.pid === undefined) {
44
+ throw new Error('Failed to spawn worker process: no PID assigned');
45
+ }
46
+ await writeFile(PID_FILE, String(child.pid), 'utf-8');
47
+ }
48
+ export async function ensureWorkerProcess() {
49
+ if (await isWorkerRunning()) {
50
+ return;
51
+ }
52
+ await spawnWorker();
53
+ }
54
+ //# sourceMappingURL=ensureWorkerProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureWorkerProcess.js","sourceRoot":"","sources":["../src/ensureWorkerProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE5C,MAAM,aAAa,GAAG;;CAErB,CAAC;AAEF,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;IAChC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,qBAAqB,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE;QACxE,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,MAAM,eAAe,EAAE,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ExecResult {
2
+ stdout: string;
3
+ stderr: string;
4
+ }
5
+ export declare function execCommand(command: string, args: string[]): Promise<ExecResult>;
6
+ export {};
7
+ //# sourceMappingURL=execCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execCommand.d.ts","sourceRoot":"","sources":["../src/execCommand.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAUtF"}
@@ -0,0 +1,13 @@
1
+ import { execFile } from 'node:child_process';
2
+ export async function execCommand(command, args) {
3
+ return new Promise((resolve, reject) => {
4
+ execFile(command, args, { timeout: 10_000 }, (error, stdout, stderr) => {
5
+ if (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ resolve({ stdout: stdout.toString(), stderr: stderr.toString() });
10
+ });
11
+ });
12
+ }
13
+ //# sourceMappingURL=execCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execCommand.js","sourceRoot":"","sources":["../src/execCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAO9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,IAAc;IAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACrE,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function preExecute(): Promise<void>;
2
+ //# sourceMappingURL=preExecute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preExecute.d.ts","sourceRoot":"","sources":["../src/preExecute.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAQhD"}
@@ -0,0 +1,12 @@
1
+ import { bootstrapInfrastructure } from './bootstrapInfrastructure.js';
2
+ import { checkPrerequisites } from './checkPrerequisites.js';
3
+ import { printPrerequisiteFailures } from './printPrerequisiteFailures.js';
4
+ export async function preExecute() {
5
+ const prereqs = await checkPrerequisites();
6
+ if (!prereqs.allPassed) {
7
+ printPrerequisiteFailures(prereqs);
8
+ process.exit(1);
9
+ }
10
+ await bootstrapInfrastructure();
11
+ }
12
+ //# sourceMappingURL=preExecute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preExecute.js","sourceRoot":"","sources":["../src/preExecute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,uBAAuB,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PrerequisiteCheckResult } from '@quickstartsoft/ql-shared-types';
2
+ export declare function printPrerequisiteFailures(result: PrerequisiteCheckResult): void;
3
+ //# sourceMappingURL=printPrerequisiteFailures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printPrerequisiteFailures.d.ts","sourceRoot":"","sources":["../src/printPrerequisiteFailures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CA0B/E"}
@@ -0,0 +1,21 @@
1
+ export function printPrerequisiteFailures(result) {
2
+ if (result.allPassed) {
3
+ return;
4
+ }
5
+ const messages = [];
6
+ if (result.docker.message) {
7
+ messages.push(result.docker.message);
8
+ }
9
+ if (result.claudeCli.message) {
10
+ messages.push(result.claudeCli.message);
11
+ }
12
+ if (result.git.message) {
13
+ messages.push(result.git.message);
14
+ }
15
+ console.error('\n--- Prerequisite Check Failures ---\n');
16
+ for (const msg of messages) {
17
+ console.error(` - ${msg}`);
18
+ }
19
+ console.error('');
20
+ }
21
+ //# sourceMappingURL=printPrerequisiteFailures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printPrerequisiteFailures.js","sourceRoot":"","sources":["../src/printPrerequisiteFailures.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CAAC,MAA+B;IACvE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,12 @@
1
+ interface StartWorkflowParams {
2
+ workflowName: string;
3
+ workflowId: string;
4
+ args: unknown[];
5
+ }
6
+ interface StartWorkflowResult {
7
+ workflowId: string;
8
+ runId: string;
9
+ }
10
+ export declare function startWorkflow(params: StartWorkflowParams): Promise<StartWorkflowResult>;
11
+ export {};
12
+ //# sourceMappingURL=startWorkflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startWorkflow.d.ts","sourceRoot":"","sources":["../src/startWorkflow.ts"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkB7F"}
@@ -0,0 +1,22 @@
1
+ import { Client, Connection } from '@temporalio/client';
2
+ const TEMPORAL_ADDRESS = 'localhost:7233';
3
+ const TASK_QUEUE = 'quick-workflow';
4
+ export async function startWorkflow(params) {
5
+ const connection = await Connection.connect({ address: TEMPORAL_ADDRESS });
6
+ const client = new Client({ connection });
7
+ try {
8
+ const handle = await client.workflow.start(params.workflowName, {
9
+ taskQueue: TASK_QUEUE,
10
+ workflowId: params.workflowId,
11
+ args: params.args,
12
+ });
13
+ return {
14
+ workflowId: handle.workflowId,
15
+ runId: handle.firstExecutionRunId,
16
+ };
17
+ }
18
+ finally {
19
+ await connection.close();
20
+ }
21
+ }
22
+ //# sourceMappingURL=startWorkflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startWorkflow.js","sourceRoot":"","sources":["../src/startWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAapC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;YAC9D,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,mBAAmB;SAClC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC"}