pm-orchestrator-runner 1.0.14 → 1.0.16

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/README.md CHANGED
@@ -40,10 +40,10 @@ pm repl --namespace stable
40
40
 
41
41
  ```bash
42
42
  # Start Web UI server
43
- pm web --port 3000
43
+ pm web --port 5678
44
44
 
45
45
  # Verify Web UI
46
- curl http://localhost:3000/api/health
46
+ curl http://localhost:5678/api/health
47
47
  ```
48
48
 
49
49
  ### Non-Interactive Mode (Scripting)
@@ -95,7 +95,7 @@ pm --project-mode fixed --project-root /path/to/project
95
95
 
96
96
  | Option | Description |
97
97
  |--------|-------------|
98
- | `--port <number>` | Web UI port (default: 3000) |
98
+ | `--port <number>` | Web UI port (default: 5678) |
99
99
  | `--namespace <name>` | Namespace for state separation |
100
100
 
101
101
  ## REPL Commands
@@ -115,18 +115,18 @@ Inside the REPL:
115
115
 
116
116
  ```bash
117
117
  # 1. Start Web UI
118
- pm web --port 3000
118
+ pm web --port 5678
119
119
 
120
120
  # 2. Health check
121
- curl http://localhost:3000/api/health
121
+ curl http://localhost:5678/api/health
122
122
 
123
123
  # 3. Submit task
124
- curl -X POST http://localhost:3000/api/tasks \
124
+ curl -X POST http://localhost:5678/api/tasks \
125
125
  -H "Content-Type: application/json" \
126
126
  -d '{"task_group_id":"test","prompt":"hello"}'
127
127
 
128
128
  # 4. View tasks
129
- curl http://localhost:3000/api/task-groups
129
+ curl http://localhost:5678/api/task-groups
130
130
  ```
131
131
 
132
132
  ## Environment Variables
package/dist/cli/index.js CHANGED
@@ -51,6 +51,7 @@ const cli_interface_1 = require("./cli-interface");
51
51
  const repl_interface_1 = require("../repl/repl-interface");
52
52
  const server_1 = require("../web/server");
53
53
  const queue_1 = require("../queue");
54
+ const claude_code_executor_1 = require("../executor/claude-code-executor");
54
55
  const namespace_1 = require("../config/namespace");
55
56
  const api_key_onboarding_1 = require("../keys/api-key-onboarding");
56
57
  /**
@@ -88,10 +89,10 @@ REPL Options:
88
89
  --print-project-path Print PROJECT_PATH=<path> on startup
89
90
  --namespace <name> Namespace for state separation (default: 'default')
90
91
  Examples: 'stable', 'dev', 'test-1'
91
- --port <number> Web UI port (default: 3000 for 'default'/'stable', 3001 for 'dev')
92
+ --port <number> Web UI port (default: 5678 for 'default'/'stable', 5679 for 'dev')
92
93
 
93
94
  Web Options:
94
- --port <number> Web UI port (default: 3000)
95
+ --port <number> Web UI port (default: 5678)
95
96
  --namespace <name> Namespace for state separation
96
97
 
97
98
  General Options:
@@ -102,17 +103,17 @@ Examples:
102
103
  pm # Start REPL in current directory
103
104
  pm --project ./my-project # Start REPL with specific project
104
105
  pm repl --namespace stable # Start REPL with stable namespace
105
- pm web --port 3000 # Start Web UI on port 3000
106
+ pm web --port 5678 # Start Web UI on port 5678
106
107
  pm start ./my-project --dry-run # Start session with dry-run
107
108
  pm continue session-2025-01-15-abc123 # Continue a session
108
109
 
109
110
  Web UI Verification:
110
- 1. Start Web UI: pm web --port 3000
111
- 2. Health check: curl http://localhost:3000/api/health
112
- 3. Submit task: curl -X POST http://localhost:3000/api/tasks \\
111
+ 1. Start Web UI: pm web --port 5678
112
+ 2. Health check: curl http://localhost:5678/api/health
113
+ 3. Submit task: curl -X POST http://localhost:5678/api/tasks \\
113
114
  -H "Content-Type: application/json" \\
114
115
  -d '{"task_group_id":"test","prompt":"hello"}'
115
- 4. View tasks: curl http://localhost:3000/api/task-groups
116
+ 4. View tasks: curl http://localhost:5678/api/task-groups
116
117
  `;
117
118
  /**
118
119
  * Version - read from package.json
@@ -251,6 +252,7 @@ async function startRepl(replArgs) {
251
252
  // Build namespace configuration (per spec/21_STABLE_DEV.md)
252
253
  // Fail-closed: buildNamespaceConfig throws on invalid namespace
253
254
  const namespaceConfig = (0, namespace_1.buildNamespaceConfig)({
255
+ autoDerive: true,
254
256
  namespace: replArgs.namespace,
255
257
  projectRoot: projectPath,
256
258
  port: replArgs.port,
@@ -316,6 +318,44 @@ function generateWebSessionId() {
316
318
  const random = Math.random().toString(36).substring(2, 8);
317
319
  return `web-${dateStr}-${random}`;
318
320
  }
321
+ /**
322
+ * Create a TaskExecutor that uses ClaudeCodeExecutor
323
+ */
324
+ function createTaskExecutor(projectPath) {
325
+ return async (item) => {
326
+ console.log(`[Runner] Executing task: ${item.task_id}`);
327
+ console.log(`[Runner] Prompt: ${item.prompt.substring(0, 100)}${item.prompt.length > 100 ? '...' : ''}`);
328
+ try {
329
+ const executor = new claude_code_executor_1.ClaudeCodeExecutor({
330
+ projectPath,
331
+ timeout: 10 * 60 * 1000, // 10 minutes
332
+ softTimeoutMs: 60 * 1000,
333
+ hardTimeoutMs: 120 * 1000,
334
+ });
335
+ const result = await executor.execute({
336
+ id: item.task_id,
337
+ prompt: item.prompt,
338
+ workingDir: projectPath,
339
+ });
340
+ console.log(`[Runner] Task ${item.task_id} completed with status: ${result.status}`);
341
+ if (result.status === 'COMPLETE') {
342
+ return { status: 'COMPLETE' };
343
+ }
344
+ else if (result.status === 'ERROR') {
345
+ return { status: 'ERROR', errorMessage: result.error || 'Task failed' };
346
+ }
347
+ else {
348
+ // INCOMPLETE, NO_EVIDENCE, BLOCKED -> treat as ERROR for queue purposes
349
+ return { status: 'ERROR', errorMessage: `Task ended with status: ${result.status}` };
350
+ }
351
+ }
352
+ catch (error) {
353
+ const errorMessage = error instanceof Error ? error.message : String(error);
354
+ console.error(`[Runner] Task ${item.task_id} failed:`, errorMessage);
355
+ return { status: 'ERROR', errorMessage };
356
+ }
357
+ };
358
+ }
319
359
  /**
320
360
  * Start Web UI server
321
361
  */
@@ -323,19 +363,45 @@ async function startWebServer(webArgs) {
323
363
  const projectPath = process.cwd();
324
364
  // Build namespace configuration
325
365
  const namespaceConfig = (0, namespace_1.buildNamespaceConfig)({
366
+ autoDerive: true,
326
367
  namespace: webArgs.namespace,
327
368
  projectRoot: projectPath,
328
369
  port: webArgs.port,
329
370
  });
330
371
  const port = webArgs.port || namespaceConfig.port;
331
- const queueStore = (0, queue_1.createNamespacedQueueStore)({
372
+ const queueStore = new queue_1.QueueStore({
332
373
  namespace: namespaceConfig.namespace,
333
- tableName: namespaceConfig.tableName,
374
+ });
375
+ await queueStore.ensureTable();
376
+ // Create TaskExecutor and QueuePoller
377
+ const taskExecutor = createTaskExecutor(projectPath);
378
+ const poller = new queue_1.QueuePoller(queueStore, taskExecutor, {
379
+ pollIntervalMs: 1000,
380
+ recoverOnStartup: true,
381
+ projectRoot: projectPath,
382
+ });
383
+ // Set up poller event listeners
384
+ poller.on('started', () => {
385
+ console.log('[Runner] Queue poller started');
386
+ });
387
+ poller.on('claimed', (item) => {
388
+ console.log(`[Runner] Claimed task: ${item.task_id}`);
389
+ });
390
+ poller.on('completed', (item) => {
391
+ console.log(`[Runner] Completed task: ${item.task_id}`);
392
+ });
393
+ poller.on('error', (item, error) => {
394
+ console.error(`[Runner] Task ${item.task_id} error:`, error.message);
395
+ });
396
+ poller.on('stale-recovered', (count) => {
397
+ console.log(`[Runner] Recovered ${count} stale tasks`);
334
398
  });
335
399
  const server = new server_1.WebServer({
336
400
  port,
337
401
  queueStore,
338
402
  sessionId: generateWebSessionId(),
403
+ namespace: namespaceConfig.namespace,
404
+ projectRoot: projectPath,
339
405
  });
340
406
  console.log(`Starting Web UI server on port ${port}...`);
341
407
  console.log(`Namespace: ${namespaceConfig.namespace}`);
@@ -348,7 +414,21 @@ async function startWebServer(webArgs) {
348
414
  console.log(' -d \'{"task_group_id":"test","prompt":"hello"}\'');
349
415
  console.log(` 3. View tasks: curl http://localhost:${port}/api/task-groups`);
350
416
  console.log('');
417
+ // Start both web server and poller
351
418
  await server.start();
419
+ await poller.start();
420
+ console.log('[Runner] Web server and queue poller are running');
421
+ console.log('[Runner] Press Ctrl+C to stop');
422
+ // Handle graceful shutdown
423
+ const shutdown = async () => {
424
+ console.log('\n[Runner] Shutting down...');
425
+ await poller.stop();
426
+ await server.stop();
427
+ console.log('[Runner] Shutdown complete');
428
+ process.exit(0);
429
+ };
430
+ process.on('SIGINT', shutdown);
431
+ process.on('SIGTERM', shutdown);
352
432
  }
353
433
  /**
354
434
  * Check if argument looks like an option (starts with -)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,21 @@
1
1
  /**
2
- * Namespace Configuration
2
+ * Namespace Configuration (v2)
3
3
  * Per spec/21_STABLE_DEV.md
4
4
  *
5
- * Provides state separation between stable and dev runners:
6
- * - QueueStore table name: pm-runner-queue-{namespace}
5
+ * v2 Changes:
6
+ * - Single table design: namespace is part of the composite key
7
+ * - Table name is fixed: pm-runner-queue
8
+ * - getTableName() returns fixed value
9
+ *
10
+ * Provides state separation between namespaces:
11
+ * - Data separation via namespace partition key
7
12
  * - State directory: .claude/state/{namespace}/
8
13
  * - Web UI port: configurable via --port
9
14
  *
15
+ * Auto-derivation: "Same Folder = Same Queue"
16
+ * - Derives namespace from project root path: {folder_name}-{path_hash_4_chars}
17
+ * - Example: /Users/masa/dev/my-project -> my-project-a1b2
18
+ *
10
19
  * Fail-closed: Invalid namespace names cause immediate exit
11
20
  */
12
21
  /**
@@ -19,12 +28,14 @@ export declare const DEFAULT_NAMESPACE = "default";
19
28
  export interface NamespaceConfig {
20
29
  /** Namespace name (default: 'default') */
21
30
  namespace: string;
22
- /** DynamoDB table name derived from namespace */
31
+ /** DynamoDB table name (v2: always pm-runner-queue) */
23
32
  tableName: string;
24
33
  /** State directory path derived from namespace */
25
34
  stateDir: string;
26
- /** Web UI port (default: 3000 for default namespace) */
35
+ /** Web UI port (default: 5678 for default namespace) */
27
36
  port: number;
37
+ /** Whether namespace was auto-derived from project path */
38
+ autoDerived?: boolean;
28
39
  }
29
40
  /**
30
41
  * Validate namespace name
@@ -32,9 +43,9 @@ export interface NamespaceConfig {
32
43
  */
33
44
  export declare function validateNamespace(namespace: string): string | undefined;
34
45
  /**
35
- * Get QueueStore table name for namespace
46
+ * Get QueueStore table name (v2: always returns fixed table name)
36
47
  */
37
- export declare function getTableName(namespace: string): string;
48
+ export declare function getTableName(_namespace: string): string;
38
49
  /**
39
50
  * Get state directory path for namespace
40
51
  * @param projectRoot - The project root directory
@@ -43,16 +54,31 @@ export declare function getTableName(namespace: string): string;
43
54
  export declare function getStateDir(projectRoot: string, namespace: string): string;
44
55
  /**
45
56
  * Get default Web UI port for namespace
46
- * - default: 3000
47
- * - stable: 3000
48
- * - dev: 3001
49
- * - Others: 3000 + hash(namespace) % 1000
57
+ * - default: 5678
58
+ * - stable: 5678
59
+ * - dev: 5679
60
+ * - Others: 5680 + hash(namespace) % 1000
50
61
  */
51
62
  export declare function getDefaultPort(namespace: string): number;
63
+ /**
64
+ * Derive namespace from project path
65
+ * Format: {folder_name}-{4_char_hash}
66
+ * Example: /Users/masa/dev/my-project -> my-project-a1b2
67
+ *
68
+ * @param projectPath - Full path to project directory
69
+ * @returns Derived namespace string
70
+ */
71
+ export declare function deriveNamespaceFromPath(projectPath: string): string;
52
72
  /**
53
73
  * Build namespace configuration
54
74
  * Fail-closed: Throws on invalid namespace
55
75
  *
76
+ * Priority order:
77
+ * 1. Explicit namespace option
78
+ * 2. PM_RUNNER_NAMESPACE environment variable
79
+ * 3. Auto-derived from projectRoot (if autoDerive is true)
80
+ * 4. DEFAULT_NAMESPACE ('default')
81
+ *
56
82
  * @param options - Configuration options
57
83
  * @returns Namespace configuration
58
84
  * @throws Error if namespace is invalid
@@ -61,6 +87,7 @@ export declare function buildNamespaceConfig(options: {
61
87
  namespace?: string;
62
88
  projectRoot: string;
63
89
  port?: number;
90
+ autoDerive?: boolean;
64
91
  }): NamespaceConfig;
65
92
  /**
66
93
  * Namespace comparison utilities
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/config/namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH;;GAEG;AACH,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,eAAe,CAelB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACkB,MAAM,OAAO,MAAM,GAAG,OAAO;IAIlD;;OAEG;kCAC2B,MAAM,GAAG,OAAO;IAI9C;;OAEG;wBACiB,MAAM,GAAG,OAAO;IAIpC;;OAEG;qBACc,MAAM,GAAG,OAAO;CAGlC,CAAC"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/config/namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmBH;;GAEG;AACH,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAY3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBxD;AA2BD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoCnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,eAAe,CAgClB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACkB,MAAM,OAAO,MAAM,GAAG,OAAO;IAIlD;;OAEG;kCAC2B,MAAM,GAAG,OAAO;IAI9C;;OAEG;wBACiB,MAAM,GAAG,OAAO;IAIpC;;OAEG;qBACc,MAAM,GAAG,OAAO;CAGlC,CAAC"}
@@ -1,22 +1,68 @@
1
1
  "use strict";
2
2
  /**
3
- * Namespace Configuration
3
+ * Namespace Configuration (v2)
4
4
  * Per spec/21_STABLE_DEV.md
5
5
  *
6
- * Provides state separation between stable and dev runners:
7
- * - QueueStore table name: pm-runner-queue-{namespace}
6
+ * v2 Changes:
7
+ * - Single table design: namespace is part of the composite key
8
+ * - Table name is fixed: pm-runner-queue
9
+ * - getTableName() returns fixed value
10
+ *
11
+ * Provides state separation between namespaces:
12
+ * - Data separation via namespace partition key
8
13
  * - State directory: .claude/state/{namespace}/
9
14
  * - Web UI port: configurable via --port
10
15
  *
16
+ * Auto-derivation: "Same Folder = Same Queue"
17
+ * - Derives namespace from project root path: {folder_name}-{path_hash_4_chars}
18
+ * - Example: /Users/masa/dev/my-project -> my-project-a1b2
19
+ *
11
20
  * Fail-closed: Invalid namespace names cause immediate exit
12
21
  */
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || (function () {
39
+ var ownKeys = function(o) {
40
+ ownKeys = Object.getOwnPropertyNames || function (o) {
41
+ var ar = [];
42
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
43
+ return ar;
44
+ };
45
+ return ownKeys(o);
46
+ };
47
+ return function (mod) {
48
+ if (mod && mod.__esModule) return mod;
49
+ var result = {};
50
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
51
+ __setModuleDefault(result, mod);
52
+ return result;
53
+ };
54
+ })();
13
55
  Object.defineProperty(exports, "__esModule", { value: true });
14
56
  exports.NamespaceUtils = exports.DEFAULT_NAMESPACE = void 0;
15
57
  exports.validateNamespace = validateNamespace;
16
58
  exports.getTableName = getTableName;
17
59
  exports.getStateDir = getStateDir;
18
60
  exports.getDefaultPort = getDefaultPort;
61
+ exports.deriveNamespaceFromPath = deriveNamespaceFromPath;
19
62
  exports.buildNamespaceConfig = buildNamespaceConfig;
63
+ const path = __importStar(require("path"));
64
+ const crypto = __importStar(require("crypto"));
65
+ const queue_store_1 = require("../queue/queue-store");
20
66
  /**
21
67
  * Valid namespace pattern
22
68
  * - Alphanumeric and hyphens only
@@ -32,6 +78,14 @@ const RESERVED_NAMESPACES = ['all', 'none', 'null', 'undefined', 'system'];
32
78
  * Default namespace name
33
79
  */
34
80
  exports.DEFAULT_NAMESPACE = 'default';
81
+ /**
82
+ * Maximum namespace length
83
+ */
84
+ const MAX_NAMESPACE_LENGTH = 32;
85
+ /**
86
+ * Hash length for auto-derived namespaces
87
+ */
88
+ const HASH_LENGTH = 4;
35
89
  /**
36
90
  * Validate namespace name
37
91
  * Fail-closed: Returns error message if invalid, undefined if valid
@@ -40,25 +94,23 @@ function validateNamespace(namespace) {
40
94
  if (!namespace) {
41
95
  return 'Namespace cannot be empty';
42
96
  }
43
- if (namespace.length > 32) {
44
- return `Namespace too long: ${namespace.length} characters (max 32)`;
97
+ if (namespace.length > MAX_NAMESPACE_LENGTH) {
98
+ return 'Namespace too long: ' + namespace.length + ' characters (max ' + MAX_NAMESPACE_LENGTH + ')';
45
99
  }
46
100
  if (!NAMESPACE_PATTERN.test(namespace)) {
47
- return `Invalid namespace format: "${namespace}". Use alphanumeric and hyphens only (e.g., "stable", "dev", "test-1")`;
101
+ return 'Invalid namespace format: "' + namespace + '". Use alphanumeric and hyphens only (e.g., "stable", "dev", "test-1")';
48
102
  }
49
103
  if (RESERVED_NAMESPACES.includes(namespace.toLowerCase())) {
50
- return `Reserved namespace name: "${namespace}". Cannot use: ${RESERVED_NAMESPACES.join(', ')}`;
104
+ return 'Reserved namespace name: "' + namespace + '". Cannot use: ' + RESERVED_NAMESPACES.join(', ');
51
105
  }
52
106
  return undefined; // Valid
53
107
  }
54
108
  /**
55
- * Get QueueStore table name for namespace
109
+ * Get QueueStore table name (v2: always returns fixed table name)
56
110
  */
57
- function getTableName(namespace) {
58
- if (namespace === exports.DEFAULT_NAMESPACE) {
59
- return 'pm-runner-queue';
60
- }
61
- return `pm-runner-queue-${namespace}`;
111
+ function getTableName(_namespace) {
112
+ // v2: Single table design - all namespaces share the same table
113
+ return queue_store_1.QUEUE_TABLE_NAME;
62
114
  }
63
115
  /**
64
116
  * Get state directory path for namespace
@@ -67,55 +119,140 @@ function getTableName(namespace) {
67
119
  */
68
120
  function getStateDir(projectRoot, namespace) {
69
121
  if (namespace === exports.DEFAULT_NAMESPACE) {
70
- return `${projectRoot}/.claude`;
122
+ return projectRoot + '/.claude';
71
123
  }
72
- return `${projectRoot}/.claude/state/${namespace}`;
124
+ return projectRoot + '/.claude/state/' + namespace;
73
125
  }
74
126
  /**
75
127
  * Get default Web UI port for namespace
76
- * - default: 3000
77
- * - stable: 3000
78
- * - dev: 3001
79
- * - Others: 3000 + hash(namespace) % 1000
128
+ * - default: 5678
129
+ * - stable: 5678
130
+ * - dev: 5679
131
+ * - Others: 5680 + hash(namespace) % 1000
80
132
  */
81
133
  function getDefaultPort(namespace) {
82
134
  const basePorts = {
83
- 'default': 3000,
84
- 'stable': 3000,
85
- 'dev': 3001,
135
+ 'default': 5678,
136
+ 'stable': 5678,
137
+ 'dev': 5679,
86
138
  };
87
139
  if (basePorts[namespace] !== undefined) {
88
140
  return basePorts[namespace];
89
141
  }
90
- // Hash-based port for other namespaces (3002-3999)
142
+ // Hash-based port for other namespaces (5680-6677)
91
143
  let hash = 0;
92
144
  for (let i = 0; i < namespace.length; i++) {
93
145
  const char = namespace.charCodeAt(i);
94
146
  hash = ((hash << 5) - hash) + char;
95
147
  hash = hash & hash; // Convert to 32bit integer
96
148
  }
97
- return 3002 + (Math.abs(hash) % 998);
149
+ return 5680 + (Math.abs(hash) % 998);
150
+ }
151
+ /**
152
+ * Normalize folder name for namespace
153
+ * - Convert to lowercase
154
+ * - Replace underscores with hyphens
155
+ * - Remove special characters (keep only alphanumeric and hyphens)
156
+ * - Remove leading/trailing hyphens
157
+ */
158
+ function normalizeFolderName(folderName) {
159
+ return folderName
160
+ .toLowerCase()
161
+ .replace(/_/g, '-') // underscores to hyphens
162
+ .replace(/[^a-z0-9-]/g, '') // remove special chars
163
+ .replace(/^-+|-+$/g, '') // remove leading/trailing hyphens
164
+ .replace(/-+/g, '-'); // collapse multiple hyphens
165
+ }
166
+ /**
167
+ * Generate 4-character hash from path
168
+ * Uses MD5 for speed and consistency
169
+ */
170
+ function generatePathHash(fullPath) {
171
+ const hash = crypto.createHash('md5').update(fullPath).digest('hex');
172
+ return hash.substring(0, HASH_LENGTH);
173
+ }
174
+ /**
175
+ * Derive namespace from project path
176
+ * Format: {folder_name}-{4_char_hash}
177
+ * Example: /Users/masa/dev/my-project -> my-project-a1b2
178
+ *
179
+ * @param projectPath - Full path to project directory
180
+ * @returns Derived namespace string
181
+ */
182
+ function deriveNamespaceFromPath(projectPath) {
183
+ // Normalize path separators and remove trailing slash
184
+ const normalizedPath = projectPath
185
+ .replace(/\\/g, '/') // Windows to Unix paths
186
+ .replace(/\/+$/, ''); // Remove trailing slashes
187
+ // Extract folder name (basename)
188
+ const folderName = path.basename(normalizedPath);
189
+ // Normalize folder name for namespace
190
+ const normalizedFolder = normalizeFolderName(folderName);
191
+ // Generate hash from full path
192
+ const pathHash = generatePathHash(normalizedPath);
193
+ // Calculate max folder length to fit within MAX_NAMESPACE_LENGTH
194
+ // Format: {folder}-{hash} where hash is 4 chars and hyphen is 1 char
195
+ const maxFolderLength = MAX_NAMESPACE_LENGTH - HASH_LENGTH - 1;
196
+ // Truncate folder name if needed
197
+ let truncatedFolder = normalizedFolder;
198
+ if (truncatedFolder.length > maxFolderLength) {
199
+ truncatedFolder = truncatedFolder.substring(0, maxFolderLength);
200
+ // Remove trailing hyphen if truncation created one
201
+ truncatedFolder = truncatedFolder.replace(/-+$/, '');
202
+ }
203
+ // Handle edge case: empty folder name after normalization
204
+ if (!truncatedFolder) {
205
+ truncatedFolder = 'project';
206
+ }
207
+ // Combine folder name and hash
208
+ const namespace = truncatedFolder + '-' + pathHash;
209
+ return namespace;
98
210
  }
99
211
  /**
100
212
  * Build namespace configuration
101
213
  * Fail-closed: Throws on invalid namespace
102
214
  *
215
+ * Priority order:
216
+ * 1. Explicit namespace option
217
+ * 2. PM_RUNNER_NAMESPACE environment variable
218
+ * 3. Auto-derived from projectRoot (if autoDerive is true)
219
+ * 4. DEFAULT_NAMESPACE ('default')
220
+ *
103
221
  * @param options - Configuration options
104
222
  * @returns Namespace configuration
105
223
  * @throws Error if namespace is invalid
106
224
  */
107
225
  function buildNamespaceConfig(options) {
108
- const namespace = options.namespace || process.env.PM_RUNNER_NAMESPACE || exports.DEFAULT_NAMESPACE;
226
+ let namespace;
227
+ let autoDerived = false;
228
+ if (options.namespace) {
229
+ // 1. Explicit namespace option takes highest priority
230
+ namespace = options.namespace;
231
+ }
232
+ else if (process.env.PM_RUNNER_NAMESPACE) {
233
+ // 2. Environment variable
234
+ namespace = process.env.PM_RUNNER_NAMESPACE;
235
+ }
236
+ else if (options.autoDerive) {
237
+ // 3. Auto-derive from project path
238
+ namespace = deriveNamespaceFromPath(options.projectRoot);
239
+ autoDerived = true;
240
+ }
241
+ else {
242
+ // 4. Default namespace
243
+ namespace = exports.DEFAULT_NAMESPACE;
244
+ }
109
245
  // Validate namespace (fail-closed)
110
246
  const error = validateNamespace(namespace);
111
247
  if (error) {
112
- throw new Error(`Invalid namespace: ${error}`);
248
+ throw new Error('Invalid namespace: ' + error);
113
249
  }
114
250
  return {
115
251
  namespace,
116
252
  tableName: getTableName(namespace),
117
253
  stateDir: getStateDir(options.projectRoot, namespace),
118
254
  port: options.port || getDefaultPort(namespace),
255
+ autoDerived,
119
256
  };
120
257
  }
121
258
  /**