@planu/cli 4.11.1 → 4.11.2

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 (116) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/engine/cascade-hooks/registry.js +0 -2
  3. package/dist/engine/challenge-scenarios-loader.d.ts +3 -3
  4. package/dist/engine/compliance-injector.d.ts +3 -3
  5. package/dist/engine/dashboard/kanban-logic.d.ts +1 -1
  6. package/dist/engine/doc-generator/portal/risk-matrix-svg.d.ts +1 -1
  7. package/dist/engine/doc-generator/proposal/proposal-generator.d.ts +1 -1
  8. package/dist/engine/elicitation/answer-extractor.d.ts +1 -4
  9. package/dist/engine/elicitation/answer-extractor.js +197 -68
  10. package/dist/engine/elicitation/decision-gap-detector.js +59 -79
  11. package/dist/engine/elicitation/index.d.ts +0 -1
  12. package/dist/engine/elicitation/index.js +0 -1
  13. package/dist/engine/elicitation/question-grounding-gate.js +83 -34
  14. package/dist/engine/evidence-gates/lifecycle-gate.js +27 -14
  15. package/dist/engine/evidence-index/index-builder.js +7 -2
  16. package/dist/engine/frontmatter-sha/frozen-fields.d.ts +1 -1
  17. package/dist/engine/handoff-artifacts/schemas/red-tests-handoff.d.ts +2 -2
  18. package/dist/engine/handoff-artifacts/schemas.d.ts +22 -22
  19. package/dist/engine/human-summary.js +3 -3
  20. package/dist/engine/implementation-contract/common.d.ts +1 -1
  21. package/dist/engine/keyword-matcher/stopwords.d.ts +2 -2
  22. package/dist/engine/provider-adapters/adapters/claude.d.ts +1 -1
  23. package/dist/engine/provider-adapters/adapters/gemini.d.ts +1 -1
  24. package/dist/engine/provider-adapters/adapters/gpt4.d.ts +1 -1
  25. package/dist/engine/provider-adapters/adapters/markdown.d.ts +1 -1
  26. package/dist/engine/safety/atomic-write-file.d.ts +1 -1
  27. package/dist/engine/safety/cross-process-lock.d.ts +1 -1
  28. package/dist/engine/safety/path-sanitizer.d.ts +1 -1
  29. package/dist/engine/security-analyzer/profile-detector.js +48 -16
  30. package/dist/engine/spec-format/copula-blacklist.d.ts +2 -2
  31. package/dist/engine/spec-format/metadata-value-policy.d.ts +20 -20
  32. package/dist/engine/text-signal-boundaries.js +45 -12
  33. package/dist/engine/universal-rules/rules/planu-modes.js +0 -2
  34. package/dist/engine/well-known/manifest-schema.d.ts +33 -33
  35. package/dist/engine/workers/schema.d.ts +3 -3
  36. package/dist/hosts/claude-code/ux/mcp-resources.d.ts +4 -4
  37. package/dist/hosts/codex/rest-shim.d.ts +1 -1
  38. package/dist/native/lightweight-command-catalog.d.ts +30 -30
  39. package/dist/server/openapi-spec.d.ts +132 -132
  40. package/dist/tools/challenge-spec/event-challenge-scenarios.js +8 -27
  41. package/dist/tools/challenge-spec/resilience-challenge-scenarios-a.js +16 -32
  42. package/dist/tools/challenge-spec/resilience-challenge-scenarios-b.js +15 -20
  43. package/dist/tools/challenge-spec/scenario-collector.d.ts +13 -0
  44. package/dist/tools/challenge-spec/scenario-collector.js +86 -0
  45. package/dist/tools/challenge-spec/scenarios-data.js +10 -9
  46. package/dist/tools/challenge-spec/scenarios-failure.js +38 -54
  47. package/dist/tools/challenge-spec/scenarios-scale.js +14 -15
  48. package/dist/tools/challenge-spec/scenarios-security.d.ts +1 -1
  49. package/dist/tools/challenge-spec/scenarios-security.js +18 -11
  50. package/dist/tools/challenge-spec/scenarios-utils.d.ts +31 -5
  51. package/dist/tools/challenge-spec/scenarios-utils.js +102 -6
  52. package/dist/tools/challenge-spec/security-challenge-scenarios.d.ts +1 -1
  53. package/dist/tools/challenge-spec/security-challenge-scenarios.js +20 -25
  54. package/dist/tools/challenge-spec.js +39 -118
  55. package/dist/tools/compliance-gate-handler.d.ts +1 -1
  56. package/dist/tools/create-spec.js +4 -24
  57. package/dist/tools/delete-first/suggest-deletions.d.ts +1 -1
  58. package/dist/tools/generate-batch-script.d.ts +2 -2
  59. package/dist/tools/init-project/rules-generator.js +0 -1
  60. package/dist/tools/oauth-handler.d.ts +1 -1
  61. package/dist/tools/register-sdd-tools.d.ts +1 -1
  62. package/dist/tools/render-spec-for-provider.d.ts +2 -2
  63. package/dist/tools/scan-orphan-spec-refs.d.ts +6 -6
  64. package/dist/tools/schemas/agents.d.ts +7 -7
  65. package/dist/tools/schemas/analysis.d.ts +11 -11
  66. package/dist/tools/schemas/delete.d.ts +5 -5
  67. package/dist/tools/schemas/github.d.ts +4 -4
  68. package/dist/tools/schemas/ide-config.d.ts +12 -12
  69. package/dist/tools/schemas/infra.d.ts +9 -9
  70. package/dist/tools/schemas/lifecycle.d.ts +50 -50
  71. package/dist/tools/schemas/llm-provider-schemas.d.ts +7 -7
  72. package/dist/tools/schemas/plugins-schemas.d.ts +12 -12
  73. package/dist/tools/schemas/project-graph.d.ts +6 -6
  74. package/dist/tools/schemas/rbac.d.ts +2 -2
  75. package/dist/tools/schemas/registry.d.ts +3 -3
  76. package/dist/tools/schemas/runtime-security.d.ts +2 -2
  77. package/dist/tools/schemas/session.d.ts +2 -2
  78. package/dist/tools/schemas/spec.d.ts +15 -15
  79. package/dist/tools/schemas/token-intelligence.d.ts +6 -6
  80. package/dist/tools/schemas/token-optimization.d.ts +2 -2
  81. package/dist/tools/schemas/workers-schema.d.ts +4 -4
  82. package/dist/tools/skill-bootstrap-handler.d.ts +7 -7
  83. package/dist/tools/tool-registry/deprecated-stubs.d.ts +1 -1
  84. package/dist/tools/triage-request.d.ts +3 -3
  85. package/dist/tools/update-status/file-sync.d.ts +1 -1
  86. package/dist/tools/update-status/file-sync.js +10 -45
  87. package/dist/tools/update-status/index.js +28 -27
  88. package/dist/tools/update-status/response-builder.d.ts +1 -1
  89. package/dist/tools/update-status/response-builder.js +11 -19
  90. package/dist/tools/update-status/transition-guard.js +1 -1
  91. package/dist/tools/update-status-actions.d.ts +0 -1
  92. package/dist/tools/update-status-actions.js +10 -26
  93. package/dist/tools/update-status-convention-gate.d.ts +1 -6
  94. package/dist/tools/update-status-convention-gate.js +9 -33
  95. package/dist/types/docs.d.ts +0 -4
  96. package/dist/types/env.d.ts +0 -4
  97. package/dist/types/estimation.d.ts +0 -2
  98. package/dist/types/multi-teammate-review.d.ts +4 -4
  99. package/dist/types/plugin-install.d.ts +7 -7
  100. package/package.json +21 -18
  101. package/planu-native.json +1 -1
  102. package/planu-plugin.json +1 -1
  103. package/src/i18n/messages/en.json +0 -72
  104. package/src/i18n/messages/es.json +0 -72
  105. package/src/i18n/messages/pt.json +0 -72
  106. package/dist/config/elicitation-dimensions.json +0 -51
  107. package/dist/engine/actuals-estimator.d.ts +0 -14
  108. package/dist/engine/actuals-estimator.js +0 -64
  109. package/dist/engine/cascade-hooks/hooks/living-specs.hook.d.ts +0 -3
  110. package/dist/engine/cascade-hooks/hooks/living-specs.hook.js +0 -19
  111. package/dist/engine/elicitation/option-builder.d.ts +0 -9
  112. package/dist/engine/elicitation/option-builder.js +0 -85
  113. package/dist/engine/progress-writer.d.ts +0 -10
  114. package/dist/engine/progress-writer.js +0 -63
  115. package/dist/tools/update-status/mode-hints.d.ts +0 -4
  116. package/dist/tools/update-status/mode-hints.js +0 -24
@@ -4,102 +4,102 @@
4
4
  */
5
5
  export declare const SPEC_METADATA_VALUE_POLICY: {
6
6
  readonly id: {
7
- readonly classification: "required";
7
+ readonly classification: 'required';
8
8
  readonly consumers: readonly [string, ...string[]];
9
9
  readonly purpose: string;
10
10
  };
11
11
  readonly title: {
12
- readonly classification: "required";
12
+ readonly classification: 'required';
13
13
  readonly consumers: readonly [string, ...string[]];
14
14
  readonly purpose: string;
15
15
  };
16
16
  readonly status: {
17
- readonly classification: "required";
17
+ readonly classification: 'required';
18
18
  readonly consumers: readonly [string, ...string[]];
19
19
  readonly purpose: string;
20
20
  };
21
21
  readonly type: {
22
- readonly classification: "required";
22
+ readonly classification: 'required';
23
23
  readonly consumers: readonly [string, ...string[]];
24
24
  readonly purpose: string;
25
25
  };
26
26
  readonly target: {
27
- readonly classification: "required";
27
+ readonly classification: 'required';
28
28
  readonly consumers: readonly [string, ...string[]];
29
29
  readonly purpose: string;
30
30
  };
31
31
  readonly scope: {
32
- readonly classification: "required";
32
+ readonly classification: 'required';
33
33
  readonly consumers: readonly [string, ...string[]];
34
34
  readonly purpose: string;
35
35
  };
36
36
  readonly difficulty: {
37
- readonly classification: "required";
37
+ readonly classification: 'required';
38
38
  readonly consumers: readonly [string, ...string[]];
39
39
  readonly purpose: string;
40
40
  };
41
41
  readonly risk: {
42
- readonly classification: "required";
42
+ readonly classification: 'required';
43
43
  readonly consumers: readonly [string, ...string[]];
44
44
  readonly purpose: string;
45
45
  };
46
46
  readonly branch: {
47
- readonly classification: "required";
47
+ readonly classification: 'required';
48
48
  readonly consumers: readonly [string, ...string[]];
49
49
  readonly purpose: string;
50
50
  };
51
51
  readonly created: {
52
- readonly classification: "required";
52
+ readonly classification: 'required';
53
53
  readonly consumers: readonly [string, ...string[]];
54
54
  readonly purpose: string;
55
55
  };
56
56
  readonly spec_format_version: {
57
- readonly classification: "required";
57
+ readonly classification: 'required';
58
58
  readonly consumers: readonly [string, ...string[]];
59
59
  readonly purpose: string;
60
60
  };
61
61
  readonly spec_version: {
62
- readonly classification: "required";
62
+ readonly classification: 'required';
63
63
  readonly consumers: readonly [string, ...string[]];
64
64
  readonly purpose: string;
65
65
  };
66
66
  readonly tags: {
67
- readonly classification: "conditional";
67
+ readonly classification: 'conditional';
68
68
  readonly consumers: readonly [string, ...string[]];
69
69
  readonly purpose: string;
70
70
  };
71
71
  readonly generation: {
72
- readonly classification: "conditional";
72
+ readonly classification: 'conditional';
73
73
  readonly consumers: readonly [string, ...string[]];
74
74
  readonly purpose: string;
75
75
  };
76
76
  readonly qualityWarnings: {
77
- readonly classification: "conditional";
77
+ readonly classification: 'conditional';
78
78
  readonly consumers: readonly [string, ...string[]];
79
79
  readonly purpose: string;
80
80
  };
81
81
  readonly grounding_required: {
82
- readonly classification: "conditional";
82
+ readonly classification: 'conditional';
83
83
  readonly consumers: readonly [string, ...string[]];
84
84
  readonly purpose: string;
85
85
  };
86
86
  readonly grounding: {
87
- readonly classification: "conditional";
87
+ readonly classification: 'conditional';
88
88
  readonly consumers: readonly [string, ...string[]];
89
89
  readonly purpose: string;
90
90
  };
91
91
  readonly criteria: {
92
- readonly classification: "conditional";
92
+ readonly classification: 'conditional';
93
93
  readonly consumers: readonly [string, ...string[]];
94
94
  readonly purpose: string;
95
95
  };
96
96
  readonly scenarios: {
97
- readonly classification: "conditional";
97
+ readonly classification: 'conditional';
98
98
  readonly consumers: readonly [string, ...string[]];
99
99
  readonly purpose: string;
100
100
  };
101
101
  readonly history: {
102
- readonly classification: "conditional";
102
+ readonly classification: 'conditional';
103
103
  readonly consumers: readonly [string, ...string[]];
104
104
  readonly purpose: string;
105
105
  };
@@ -1,5 +1,4 @@
1
1
  // engine/text-signal-boundaries.ts — Boundary-aware keyword matching for advisory signals.
2
- const NEGATION_WINDOW_WORDS = 5;
3
2
  const NEGATION_TERMS = new Set([
4
3
  'no',
5
4
  'not',
@@ -15,25 +14,57 @@ const NEGATION_TERMS = new Set([
15
14
  'never',
16
15
  ]);
17
16
  const OUT_OF_SCOPE_RE = /\b(?:out\s+of\s+scope|not\s+in\s+scope|no\s+scope|do\s+not|don't)\b/i;
17
+ const NON_AFFIRMING_CONTEXT_RE = /\b(?:false[ -]?positive|incorrect(?:ly)?|wrong(?:ly)?|irrelevant|unrelated|noise|repeated\s+failure)\b/i;
18
+ const EXCLUDED_SECTION_RE = /^(?:out\s+of\s+scope|non[ -]?goals?|examples?|anticipated\s+test\s+breaks?)\b/i;
19
+ function stripExcludedMarkdownSections(text) {
20
+ const lines = text.split('\n');
21
+ const kept = [];
22
+ let excludedLevel;
23
+ for (const line of lines) {
24
+ const heading = /^(#{1,6})\s+(.+?)\s*$/.exec(line);
25
+ if (heading) {
26
+ const marker = heading[1];
27
+ const title = heading[2];
28
+ if (marker === undefined || title === undefined) {
29
+ continue;
30
+ }
31
+ const level = marker.length;
32
+ if (excludedLevel !== undefined && level <= excludedLevel) {
33
+ excludedLevel = undefined;
34
+ }
35
+ if (EXCLUDED_SECTION_RE.test(title)) {
36
+ excludedLevel = level;
37
+ continue;
38
+ }
39
+ }
40
+ if (excludedLevel === undefined) {
41
+ kept.push(line);
42
+ }
43
+ }
44
+ return kept.join('\n');
45
+ }
18
46
  /** Remove fenced code and quoted examples before keyword-driven inference. */
19
47
  export function stripNonContractText(text) {
20
- return text
48
+ return stripExcludedMarkdownSections(text)
21
49
  .replace(/```[\s\S]*?```/g, ' ')
22
50
  .replace(/`[^`\n]+`/g, ' ')
23
51
  .replace(/"[^"\n]+"/g, ' ')
24
52
  .replace(/'[^'\n]+'/g, ' ');
25
53
  }
26
- function wordTokensBefore(text, index) {
27
- return text
28
- .slice(Math.max(0, index - 160), index)
29
- .toLowerCase()
30
- .split(/[^a-z0-9]+/i)
31
- .filter(Boolean);
54
+ function clauseBefore(text, index) {
55
+ const before = text.slice(Math.max(0, index - 320), index);
56
+ const boundary = Math.max(before.lastIndexOf('\n'), before.lastIndexOf('.'), before.lastIndexOf(';'));
57
+ return before.slice(boundary + 1);
32
58
  }
33
59
  function isNegatedAt(text, index) {
34
- const before = wordTokensBefore(text, index);
35
- const recent = before.slice(-NEGATION_WINDOW_WORDS);
36
- return recent.some((word) => NEGATION_TERMS.has(word));
60
+ const before = clauseBefore(text, index)
61
+ .replace(/\bnot\s+only\b/gi, '')
62
+ .toLowerCase();
63
+ const tokens = before.split(/[^a-z0-9]+/i).filter(Boolean);
64
+ return tokens.some((word) => NEGATION_TERMS.has(word));
65
+ }
66
+ function isNonAffirmingAt(text, index) {
67
+ return NON_AFFIRMING_CONTEXT_RE.test(clauseBefore(text, index));
37
68
  }
38
69
  function isOutOfScopeLine(line, indexInLine) {
39
70
  return OUT_OF_SCOPE_RE.test(line.slice(0, Math.max(indexInLine, 0) + 80));
@@ -49,7 +80,9 @@ export function hasAffirmedMatch(text, pattern) {
49
80
  const lineStart = cleaned.lastIndexOf('\n', index) + 1;
50
81
  const lineEnd = cleaned.indexOf('\n', index);
51
82
  const line = cleaned.slice(lineStart, lineEnd === -1 ? cleaned.length : lineEnd);
52
- if (!isNegatedAt(cleaned, index) && !isOutOfScopeLine(line, index - lineStart)) {
83
+ if (!isNegatedAt(cleaned, index) &&
84
+ !isNonAffirmingAt(cleaned, index) &&
85
+ !isOutOfScopeLine(line, index - lineStart)) {
53
86
  return true;
54
87
  }
55
88
  match = re.exec(cleaned);
@@ -21,7 +21,6 @@ Never suggest bypassPermissions — it disables all safety checks.
21
21
 
22
22
  ## How to apply
23
23
 
24
- - After \`update_status\` returns \`suggestedClaudeMode\`, relay it to the user: "I recommend switching to \`/mode <mode>\`"
25
24
  - NEVER switch modes automatically — always tell the user and let them decide
26
25
  - Critical bash actions (git push, npm publish, rm -rf) require approval regardless of mode
27
26
  `;
@@ -43,7 +42,6 @@ Auto-generated by \`init_project\`.
43
42
 
44
43
  ## How to apply
45
44
 
46
- - After \`update_status\` completes, suggest the appropriate mode to the user
47
45
  - NEVER switch modes automatically — always inform the user first
48
46
  `;
49
47
  }
@@ -6,87 +6,87 @@ export type { KnownCapability };
6
6
  * RFC 8615 .well-known URI pattern — follows OpenID Connect / OAuth conventions.
7
7
  */
8
8
  export declare const MANIFEST_SCHEMA_V1: {
9
- readonly $schema: "http://json-schema.org/draft-07/schema#";
10
- readonly $id: "https://planu.dev/schemas/well-known-manifest-v1.json";
11
- readonly title: "Planu .well-known Manifest v1";
12
- readonly description: "Spec registry discovery manifest published at .well-known/planu.json";
13
- readonly type: "object";
14
- readonly required: readonly ["version", "name", "specCount", "specs", "capabilities", "generatedAt"];
9
+ readonly $schema: 'http://json-schema.org/draft-07/schema#';
10
+ readonly $id: 'https://planu.dev/schemas/well-known-manifest-v1.json';
11
+ readonly title: 'Planu .well-known Manifest v1';
12
+ readonly description: 'Spec registry discovery manifest published at .well-known/planu.json';
13
+ readonly type: 'object';
14
+ readonly required: readonly ['version', 'name', 'specCount', 'specs', 'capabilities', 'generatedAt'];
15
15
  readonly additionalProperties: false;
16
16
  readonly properties: {
17
17
  readonly version: {
18
- readonly type: "number";
18
+ readonly type: 'number';
19
19
  readonly const: 1;
20
- readonly description: "Manifest schema version. Always 1 for this format.";
20
+ readonly description: 'Manifest schema version. Always 1 for this format.';
21
21
  };
22
22
  readonly name: {
23
- readonly type: "string";
23
+ readonly type: 'string';
24
24
  readonly minLength: 1;
25
25
  readonly maxLength: 200;
26
- readonly description: "Project display name.";
26
+ readonly description: 'Project display name.';
27
27
  };
28
28
  readonly specCount: {
29
- readonly type: "integer";
29
+ readonly type: 'integer';
30
30
  readonly minimum: 0;
31
- readonly description: "Total number of specs included in this manifest.";
31
+ readonly description: 'Total number of specs included in this manifest.';
32
32
  };
33
33
  readonly specs: {
34
- readonly type: "array";
35
- readonly description: "Array of spec summaries.";
34
+ readonly type: 'array';
35
+ readonly description: 'Array of spec summaries.';
36
36
  readonly items: {
37
- readonly type: "object";
38
- readonly required: readonly ["id", "title", "status", "type", "description", "tags", "created"];
37
+ readonly type: 'object';
38
+ readonly required: readonly ['id', 'title', 'status', 'type', 'description', 'tags', 'created'];
39
39
  readonly additionalProperties: false;
40
40
  readonly properties: {
41
41
  readonly id: {
42
- readonly type: "string";
43
- readonly pattern: "^SPEC-\\d+$";
42
+ readonly type: 'string';
43
+ readonly pattern: '^SPEC-\\d+$';
44
44
  };
45
45
  readonly title: {
46
- readonly type: "string";
46
+ readonly type: 'string';
47
47
  readonly maxLength: 300;
48
48
  };
49
49
  readonly status: {
50
- readonly type: "string";
50
+ readonly type: 'string';
51
51
  readonly maxLength: 50;
52
52
  };
53
53
  readonly type: {
54
- readonly type: "string";
54
+ readonly type: 'string';
55
55
  readonly maxLength: 50;
56
56
  };
57
57
  readonly description: {
58
- readonly type: "string";
58
+ readonly type: 'string';
59
59
  readonly maxLength: 200;
60
60
  };
61
61
  readonly tags: {
62
- readonly type: "array";
62
+ readonly type: 'array';
63
63
  readonly items: {
64
- readonly type: "string";
64
+ readonly type: 'string';
65
65
  readonly maxLength: 100;
66
66
  };
67
67
  };
68
68
  readonly created: {
69
- readonly type: "string";
70
- readonly format: "date";
69
+ readonly type: 'string';
70
+ readonly format: 'date';
71
71
  };
72
72
  };
73
73
  };
74
74
  };
75
75
  readonly capabilities: {
76
- readonly type: "array";
77
- readonly description: "Planu capabilities exported by this project.";
76
+ readonly type: 'array';
77
+ readonly description: 'Planu capabilities exported by this project.';
78
78
  readonly items: {
79
- readonly type: "string";
79
+ readonly type: 'string';
80
80
  readonly maxLength: 100;
81
81
  };
82
82
  };
83
83
  readonly generatedAt: {
84
- readonly type: "string";
85
- readonly format: "date-time";
86
- readonly description: "ISO 8601 timestamp when this manifest was generated.";
84
+ readonly type: 'string';
85
+ readonly format: 'date-time';
86
+ readonly description: 'ISO 8601 timestamp when this manifest was generated.';
87
87
  };
88
88
  };
89
89
  };
90
90
  /** Known capabilities that a project can declare in its manifest. */
91
- export declare const KNOWN_CAPABILITIES: readonly ["spec-registry", "federation", "living-spec", "ai-analysis", "estimation", "changelog"];
91
+ export declare const KNOWN_CAPABILITIES: readonly ['spec-registry', 'federation', 'living-spec', 'ai-analysis', 'estimation', 'changelog'];
92
92
  //# sourceMappingURL=manifest-schema.d.ts.map
@@ -2,8 +2,8 @@ import { z } from 'zod';
2
2
  export declare const WorkerTriggerSchema: z.ZodObject<{
3
3
  type: z.ZodEnum<{
4
4
  event: "event";
5
- schedule: "schedule";
6
5
  "file-change": "file-change";
6
+ schedule: "schedule";
7
7
  }>;
8
8
  patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
9
  events: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -15,8 +15,8 @@ export declare const WorkerDefinitionSchema: z.ZodObject<{
15
15
  trigger: z.ZodObject<{
16
16
  type: z.ZodEnum<{
17
17
  event: "event";
18
- schedule: "schedule";
19
18
  "file-change": "file-change";
19
+ schedule: "schedule";
20
20
  }>;
21
21
  patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
22
  events: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -38,8 +38,8 @@ export declare const WorkerRegistrySchema: z.ZodObject<{
38
38
  trigger: z.ZodObject<{
39
39
  type: z.ZodEnum<{
40
40
  event: "event";
41
- schedule: "schedule";
42
41
  "file-change": "file-change";
42
+ schedule: "schedule";
43
43
  }>;
44
44
  patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
45
45
  events: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -2,10 +2,10 @@ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { McpResourceMeta } from '../../../types/claude-code-ux.js';
3
3
  /** Planu-namespaced resource URIs exposed by SPEC-588. */
4
4
  export declare const PLANU_UX_RESOURCE_URIS: {
5
- readonly specList: "planu://ux/specs";
6
- readonly progress: "planu://ux/progress";
7
- readonly constitution: "planu://ux/constitution";
8
- readonly recentActivity: "planu://ux/recent-activity";
5
+ readonly specList: 'planu://ux/specs';
6
+ readonly progress: 'planu://ux/progress';
7
+ readonly constitution: 'planu://ux/constitution';
8
+ readonly recentActivity: 'planu://ux/recent-activity';
9
9
  };
10
10
  export declare const specListResourceMeta: McpResourceMeta;
11
11
  export declare const progressResourceMeta: McpResourceMeta;
@@ -1,3 +1,3 @@
1
- export declare const REST_SHIM_STATUS: "disabled";
1
+ export declare const REST_SHIM_STATUS: 'disabled';
2
2
  export declare const REST_SHIM_REASON = "Codex supports MCP-over-stdio natively. REST shim is not needed.";
3
3
  //# sourceMappingURL=rest-shim.d.ts.map
@@ -1,58 +1,58 @@
1
1
  import type { LightweightCommand, LightweightHost, NativeSurfaceManifest } from '../types/native.js';
2
2
  export declare const LIGHTWEIGHT_COMMANDS: readonly [{
3
- readonly id: "planu.status";
4
- readonly title: "Project status";
5
- readonly description: "Show the compact Planu project snapshot without loading the MCP tool graph.";
6
- readonly invocation: "planu status";
3
+ readonly id: 'planu.status';
4
+ readonly title: 'Project status';
5
+ readonly description: 'Show the compact Planu project snapshot without loading the MCP tool graph.';
6
+ readonly invocation: 'planu status';
7
7
  readonly hosts: readonly ["codex", "claude-code"];
8
8
  readonly requiresMcp: false;
9
9
  readonly requiresDaemon: false;
10
- readonly mapsTo: "handlePlanStatus";
10
+ readonly mapsTo: 'handlePlanStatus';
11
11
  }, {
12
- readonly id: "planu.spec.create";
13
- readonly title: "Create spec";
14
- readonly description: "Create a new spec through the CLI-backed SDD contract.";
15
- readonly invocation: "planu spec create \"<title>\"";
12
+ readonly id: 'planu.spec.create';
13
+ readonly title: 'Create spec';
14
+ readonly description: 'Create a new spec through the CLI-backed SDD contract.';
15
+ readonly invocation: 'planu spec create "<title>"';
16
16
  readonly hosts: readonly ["codex", "claude-code"];
17
17
  readonly requiresMcp: false;
18
18
  readonly requiresDaemon: false;
19
- readonly mapsTo: "handleCreateSpec";
19
+ readonly mapsTo: 'handleCreateSpec';
20
20
  }, {
21
- readonly id: "planu.spec.list";
22
- readonly title: "List specs";
23
- readonly description: "List specs in the current project with optional status/type filters.";
24
- readonly invocation: "planu spec list";
21
+ readonly id: 'planu.spec.list';
22
+ readonly title: 'List specs';
23
+ readonly description: 'List specs in the current project with optional status/type filters.';
24
+ readonly invocation: 'planu spec list';
25
25
  readonly hosts: readonly ["codex", "claude-code"];
26
26
  readonly requiresMcp: false;
27
27
  readonly requiresDaemon: false;
28
- readonly mapsTo: "handleListSpecs";
28
+ readonly mapsTo: 'handleListSpecs';
29
29
  }, {
30
- readonly id: "planu.spec.validate";
31
- readonly title: "Validate spec";
32
- readonly description: "Validate a spec against the current codebase from the native CLI surface.";
33
- readonly invocation: "planu spec validate SPEC-001";
30
+ readonly id: 'planu.spec.validate';
31
+ readonly title: 'Validate spec';
32
+ readonly description: 'Validate a spec against the current codebase from the native CLI surface.';
33
+ readonly invocation: 'planu spec validate SPEC-001';
34
34
  readonly hosts: readonly ["codex", "claude-code"];
35
35
  readonly requiresMcp: false;
36
36
  readonly requiresDaemon: false;
37
- readonly mapsTo: "handleValidate";
37
+ readonly mapsTo: 'handleValidate';
38
38
  }, {
39
- readonly id: "planu.audit.debt";
40
- readonly title: "Audit technical debt";
41
- readonly description: "Run the read-only project audit path for lightweight debt checks.";
42
- readonly invocation: "planu audit debt";
39
+ readonly id: 'planu.audit.debt';
40
+ readonly title: 'Audit technical debt';
41
+ readonly description: 'Run the read-only project audit path for lightweight debt checks.';
42
+ readonly invocation: 'planu audit debt';
43
43
  readonly hosts: readonly ["codex", "claude-code"];
44
44
  readonly requiresMcp: false;
45
45
  readonly requiresDaemon: false;
46
- readonly mapsTo: "handleAudit";
46
+ readonly mapsTo: 'handleAudit';
47
47
  }, {
48
- readonly id: "planu.release.check";
49
- readonly title: "Check release readiness";
50
- readonly description: "Check local-first release readiness, branch cleanliness, and optional gitflow drift.";
51
- readonly invocation: "planu release check";
48
+ readonly id: 'planu.release.check';
49
+ readonly title: 'Check release readiness';
50
+ readonly description: 'Check local-first release readiness, branch cleanliness, and optional gitflow drift.';
51
+ readonly invocation: 'planu release check';
52
52
  readonly hosts: readonly ["codex", "claude-code"];
53
53
  readonly requiresMcp: false;
54
54
  readonly requiresDaemon: false;
55
- readonly mapsTo: "releaseCommand";
55
+ readonly mapsTo: 'releaseCommand';
56
56
  }];
57
57
  export declare function getLightweightCommands(host?: LightweightHost): readonly LightweightCommand[];
58
58
  export declare function buildNativeSurfaceManifest(version?: string): NativeSurfaceManifest;