@planu/cli 1.0.0 → 1.0.1
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/dist/config/license-plans.json +201 -196
- package/dist/engine/filesystem-watcher/index.d.ts +31 -0
- package/dist/engine/filesystem-watcher/index.d.ts.map +1 -0
- package/dist/engine/filesystem-watcher/index.js +101 -0
- package/dist/engine/filesystem-watcher/index.js.map +1 -0
- package/dist/engine/living-specs/criteria-matcher.d.ts +12 -0
- package/dist/engine/living-specs/criteria-matcher.d.ts.map +1 -0
- package/dist/engine/living-specs/criteria-matcher.js +105 -0
- package/dist/engine/living-specs/criteria-matcher.js.map +1 -0
- package/dist/engine/living-specs/file-scanner.d.ts +11 -0
- package/dist/engine/living-specs/file-scanner.d.ts.map +1 -0
- package/dist/engine/living-specs/file-scanner.js +56 -0
- package/dist/engine/living-specs/file-scanner.js.map +1 -0
- package/dist/engine/living-specs/index.d.ts +9 -0
- package/dist/engine/living-specs/index.d.ts.map +1 -0
- package/dist/engine/living-specs/index.js +137 -0
- package/dist/engine/living-specs/index.js.map +1 -0
- package/dist/engine/skills-evaluator/eval-store.d.ts +4 -0
- package/dist/engine/skills-evaluator/eval-store.d.ts.map +1 -0
- package/dist/engine/skills-evaluator/eval-store.js +22 -0
- package/dist/engine/skills-evaluator/eval-store.js.map +1 -0
- package/dist/engine/skills-evaluator/index.d.ts +5 -0
- package/dist/engine/skills-evaluator/index.d.ts.map +1 -0
- package/dist/engine/skills-evaluator/index.js +54 -0
- package/dist/engine/skills-evaluator/index.js.map +1 -0
- package/dist/engine/skills-evaluator/scenario-runner.d.ts +7 -0
- package/dist/engine/skills-evaluator/scenario-runner.d.ts.map +1 -0
- package/dist/engine/skills-evaluator/scenario-runner.js +44 -0
- package/dist/engine/skills-evaluator/scenario-runner.js.map +1 -0
- package/dist/engine/skills-evaluator/skill-reader.d.ts +8 -0
- package/dist/engine/skills-evaluator/skill-reader.d.ts.map +1 -0
- package/dist/engine/skills-evaluator/skill-reader.js +152 -0
- package/dist/engine/skills-evaluator/skill-reader.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/eval-skill-v2-handler.d.ts +3 -0
- package/dist/tools/eval-skill-v2-handler.d.ts.map +1 -0
- package/dist/tools/eval-skill-v2-handler.js +53 -0
- package/dist/tools/eval-skill-v2-handler.js.map +1 -0
- package/dist/tools/filesystem-hooks-handler.d.ts +8 -0
- package/dist/tools/filesystem-hooks-handler.d.ts.map +1 -0
- package/dist/tools/filesystem-hooks-handler.js +96 -0
- package/dist/tools/filesystem-hooks-handler.js.map +1 -0
- package/dist/tools/reconcile-spec-living-handler.d.ts +6 -0
- package/dist/tools/reconcile-spec-living-handler.d.ts.map +1 -0
- package/dist/tools/reconcile-spec-living-handler.js +52 -0
- package/dist/tools/reconcile-spec-living-handler.js.map +1 -0
- package/dist/tools/register-filesystem-hooks-tools.d.ts +3 -0
- package/dist/tools/register-filesystem-hooks-tools.d.ts.map +1 -0
- package/dist/tools/register-filesystem-hooks-tools.js +85 -0
- package/dist/tools/register-filesystem-hooks-tools.js.map +1 -0
- package/dist/tools/register-living-specs-tools.d.ts +3 -0
- package/dist/tools/register-living-specs-tools.d.ts.map +1 -0
- package/dist/tools/register-living-specs-tools.js +24 -0
- package/dist/tools/register-living-specs-tools.js.map +1 -0
- package/dist/tools/register-skills-eval-tools.d.ts +3 -0
- package/dist/tools/register-skills-eval-tools.d.ts.map +1 -0
- package/dist/tools/register-skills-eval-tools.js +29 -0
- package/dist/tools/register-skills-eval-tools.js.map +1 -0
- package/dist/tools/register-spec-331-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-331-tools.js +3 -7
- package/dist/tools/register-spec-331-tools.js.map +1 -1
- package/dist/tools/update-status/side-effects.d.ts.map +1 -1
- package/dist/tools/update-status/side-effects.js +11 -0
- package/dist/tools/update-status/side-effects.js.map +1 -1
- package/dist/types/filesystem-hooks.d.ts +30 -0
- package/dist/types/filesystem-hooks.d.ts.map +1 -0
- package/dist/types/filesystem-hooks.js +3 -0
- package/dist/types/filesystem-hooks.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/living-specs.d.ts +35 -0
- package/dist/types/living-specs.d.ts.map +1 -0
- package/dist/types/living-specs.js +3 -0
- package/dist/types/living-specs.js.map +1 -0
- package/dist/types/skills-evaluation.d.ts +38 -0
- package/dist/types/skills-evaluation.d.ts.map +1 -0
- package/dist/types/skills-evaluation.js +3 -0
- package/dist/types/skills-evaluation.js.map +1 -0
- package/package.json +1 -1
- package/src/config/license-plans.json +201 -196
|
@@ -18,267 +18,272 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"freeTools": [
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
21
|
+
"add_comment",
|
|
22
|
+
"analyze_performance_impact",
|
|
23
|
+
"analyze_spec_size",
|
|
24
|
+
"approval_status",
|
|
25
|
+
"capture_idea",
|
|
26
|
+
"check_config_health",
|
|
27
|
+
"check_spec_lock",
|
|
28
|
+
"check_versions",
|
|
25
29
|
"clarify_requirements",
|
|
30
|
+
"configure_desktop_notifications",
|
|
31
|
+
"configure_telemetry",
|
|
32
|
+
"confluence_status",
|
|
33
|
+
"consult_docs",
|
|
26
34
|
"create_spec",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
35
|
+
"delete_decision",
|
|
36
|
+
"delete_pattern",
|
|
37
|
+
"delete_project",
|
|
38
|
+
"delete_spec",
|
|
39
|
+
"desktop_notification_status",
|
|
31
40
|
"detect_drift",
|
|
32
|
-
"
|
|
41
|
+
"discard_idea",
|
|
42
|
+
"email_digest_status",
|
|
43
|
+
"estimate",
|
|
44
|
+
"export_specs_markdown",
|
|
45
|
+
"facilitate",
|
|
46
|
+
"filesystem_hooks_status",
|
|
47
|
+
"generate_digest",
|
|
48
|
+
"generate_docs",
|
|
33
49
|
"generate_execution_plan",
|
|
50
|
+
"generate_spec_dashboard",
|
|
34
51
|
"generate_tests",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"check_versions",
|
|
38
|
-
"manage_git",
|
|
52
|
+
"init_constitution",
|
|
53
|
+
"init_project",
|
|
39
54
|
"learn_pattern",
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
55
|
+
"list_backlog",
|
|
56
|
+
"list_comments",
|
|
57
|
+
"list_lessons",
|
|
58
|
+
"list_locks",
|
|
59
|
+
"list_registered_projects",
|
|
60
|
+
"list_specs",
|
|
43
61
|
"list_templates",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"delete_decision",
|
|
62
|
+
"lock_spec",
|
|
63
|
+
"log_lesson",
|
|
64
|
+
"manage_git",
|
|
48
65
|
"manage_trash",
|
|
49
|
-
"
|
|
50
|
-
"token_usage",
|
|
66
|
+
"planu_status",
|
|
51
67
|
"pr_status",
|
|
52
|
-
"registry_search",
|
|
53
|
-
"registry_install",
|
|
54
|
-
"generate_spec_dashboard",
|
|
55
|
-
"skill_search",
|
|
56
|
-
"skill_install",
|
|
57
|
-
"submit_feedback",
|
|
58
|
-
"add_comment",
|
|
59
|
-
"list_comments",
|
|
60
|
-
"configure_telemetry",
|
|
61
|
-
"capture_idea",
|
|
62
|
-
"list_backlog",
|
|
63
68
|
"promote_idea",
|
|
64
|
-
"discard_idea",
|
|
65
|
-
"session_checkpoint",
|
|
66
|
-
"planu_status",
|
|
67
|
-
"log_lesson",
|
|
68
|
-
"list_lessons",
|
|
69
|
-
"suggest_criteria",
|
|
70
69
|
"record_actual",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"email_digest_status",
|
|
75
|
-
"confluence_status",
|
|
70
|
+
"register_project_path",
|
|
71
|
+
"registry_install",
|
|
72
|
+
"registry_search",
|
|
76
73
|
"search_specs",
|
|
77
74
|
"search_suggestions",
|
|
78
|
-
"
|
|
79
|
-
"
|
|
75
|
+
"session_checkpoint",
|
|
76
|
+
"set_locale",
|
|
77
|
+
"set_work_mode",
|
|
78
|
+
"skill_install",
|
|
79
|
+
"skill_search",
|
|
80
80
|
"slack_status",
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"list_locks",
|
|
87
|
-
"check_spec_lock",
|
|
88
|
-
"configure_desktop_notifications",
|
|
89
|
-
"desktop_notification_status",
|
|
81
|
+
"submit_feedback",
|
|
82
|
+
"suggest_criteria",
|
|
83
|
+
"suggest_stack",
|
|
84
|
+
"summarize_spec",
|
|
85
|
+
"tdd_scaffold",
|
|
90
86
|
"test_notification",
|
|
91
|
-
"
|
|
87
|
+
"token_usage",
|
|
88
|
+
"unlock_spec",
|
|
89
|
+
"unregister_project_path",
|
|
90
|
+
"update_status",
|
|
91
|
+
"validate",
|
|
92
|
+
"worker_status"
|
|
92
93
|
],
|
|
93
94
|
"proTools": [
|
|
95
|
+
"a2a_delegate",
|
|
96
|
+
"a2a_register",
|
|
97
|
+
"activate_group",
|
|
98
|
+
"agent_swarm_status",
|
|
99
|
+
"analyze_spec_dependencies",
|
|
100
|
+
"apply_spec_template",
|
|
101
|
+
"apply_template",
|
|
102
|
+
"approve_spec",
|
|
103
|
+
"assign_role",
|
|
94
104
|
"audit",
|
|
105
|
+
"audit_claude_config",
|
|
95
106
|
"audit_stack",
|
|
107
|
+
"audit_trail",
|
|
108
|
+
"auto_reconcile",
|
|
109
|
+
"branch_spec",
|
|
110
|
+
"bulk_import",
|
|
111
|
+
"calibrate_estimates",
|
|
96
112
|
"capture_learning",
|
|
97
113
|
"challenge_spec",
|
|
114
|
+
"check_compliance",
|
|
98
115
|
"check_readiness",
|
|
99
|
-
"
|
|
116
|
+
"check_spec_accuracy",
|
|
117
|
+
"config_health",
|
|
118
|
+
"configure_approval_policy",
|
|
119
|
+
"configure_compliance",
|
|
120
|
+
"configure_confluence",
|
|
121
|
+
"configure_email_digest",
|
|
122
|
+
"configure_filesystem_hooks",
|
|
123
|
+
"configure_hooks",
|
|
124
|
+
"configure_jira",
|
|
125
|
+
"configure_linear",
|
|
126
|
+
"configure_llm_providers",
|
|
127
|
+
"configure_oauth",
|
|
128
|
+
"configure_observability",
|
|
129
|
+
"configure_roles",
|
|
130
|
+
"configure_slack",
|
|
131
|
+
"configure_webhook",
|
|
132
|
+
"configure_workers",
|
|
100
133
|
"context_budget",
|
|
101
|
-
"
|
|
102
|
-
"
|
|
134
|
+
"contribute_context",
|
|
135
|
+
"coverage_gap_analyzer",
|
|
136
|
+
"create_pr_from_spec",
|
|
137
|
+
"create_release",
|
|
103
138
|
"data_governance",
|
|
104
|
-
"
|
|
139
|
+
"decompose_spec",
|
|
105
140
|
"define_ui_contract",
|
|
106
141
|
"design_schema",
|
|
107
142
|
"detect_agent",
|
|
108
143
|
"detect_contradictions",
|
|
109
144
|
"detect_deprecations",
|
|
145
|
+
"diff_spec_versions",
|
|
110
146
|
"discover_mcps",
|
|
147
|
+
"discover_registry",
|
|
148
|
+
"ecosystem_status",
|
|
149
|
+
"elicit_requirements",
|
|
150
|
+
"estimate_ai_cost",
|
|
151
|
+
"estimation_accuracy_report",
|
|
152
|
+
"eval_rule",
|
|
153
|
+
"eval_skill",
|
|
154
|
+
"eval_skill_v2",
|
|
111
155
|
"event_contracts",
|
|
156
|
+
"export_pdf",
|
|
157
|
+
"export_session",
|
|
158
|
+
"export_spec",
|
|
159
|
+
"export_specs_csv",
|
|
160
|
+
"federate_specs",
|
|
161
|
+
"federation_status",
|
|
112
162
|
"generate_adr",
|
|
163
|
+
"generate_annotations",
|
|
164
|
+
"generate_attestation",
|
|
165
|
+
"generate_automation_guide",
|
|
166
|
+
"generate_batch_script",
|
|
167
|
+
"generate_changelog",
|
|
113
168
|
"generate_checklist",
|
|
169
|
+
"generate_ci",
|
|
170
|
+
"generate_diagram",
|
|
171
|
+
"generate_docs_site",
|
|
172
|
+
"generate_ide_config",
|
|
173
|
+
"generate_infrastructure",
|
|
174
|
+
"generate_orchestration_plan",
|
|
114
175
|
"generate_orchestration_script",
|
|
176
|
+
"generate_planu_ci",
|
|
177
|
+
"generate_proposal",
|
|
115
178
|
"generate_rules",
|
|
116
179
|
"generate_skill",
|
|
180
|
+
"generate_spec_from_api",
|
|
181
|
+
"generate_spec_from_design",
|
|
117
182
|
"generate_sub_agent",
|
|
118
183
|
"generate_teammate_prompt",
|
|
184
|
+
"hook_status",
|
|
185
|
+
"import_spec",
|
|
186
|
+
"inject_criteria",
|
|
119
187
|
"integrate_pm",
|
|
188
|
+
"jira_status",
|
|
189
|
+
"legal_compliance_report",
|
|
190
|
+
"linear_status",
|
|
191
|
+
"list_groups",
|
|
192
|
+
"list_sessions",
|
|
193
|
+
"living_spec_coverage",
|
|
194
|
+
"living_spec_status",
|
|
195
|
+
"living_spec_watch",
|
|
196
|
+
"llm_provider_status",
|
|
120
197
|
"log_decision",
|
|
121
198
|
"manage_context",
|
|
199
|
+
"manage_hooks",
|
|
200
|
+
"manage_plugins",
|
|
122
201
|
"manage_scope",
|
|
202
|
+
"merge_spec_branch",
|
|
123
203
|
"migrate_tech",
|
|
124
204
|
"orchestrate",
|
|
125
205
|
"orchestrate_agents",
|
|
206
|
+
"orchestrate_runtime",
|
|
207
|
+
"outbound_webhook_status",
|
|
126
208
|
"package_handoff",
|
|
127
|
-
"plan_team_distribution",
|
|
128
209
|
"paradigm_report",
|
|
210
|
+
"plan_team_distribution",
|
|
129
211
|
"plan_upgrade",
|
|
212
|
+
"product_insights",
|
|
213
|
+
"publish_registry",
|
|
214
|
+
"publish_spec_template",
|
|
130
215
|
"reality_check",
|
|
216
|
+
"recommend_model",
|
|
131
217
|
"reconcile_hooks",
|
|
132
218
|
"reconcile_rules",
|
|
133
219
|
"reconcile_skills",
|
|
134
|
-
"config_health",
|
|
135
220
|
"reconcile_spec",
|
|
221
|
+
"living_reconcile_spec",
|
|
222
|
+
"red_team",
|
|
223
|
+
"registry_login",
|
|
224
|
+
"registry_logout",
|
|
225
|
+
"registry_publish",
|
|
226
|
+
"registry_whoami",
|
|
227
|
+
"remove_confluence",
|
|
228
|
+
"remove_jira",
|
|
229
|
+
"remove_linear",
|
|
230
|
+
"remove_slack",
|
|
231
|
+
"remove_webhook",
|
|
232
|
+
"reply_comment",
|
|
233
|
+
"request_changes",
|
|
136
234
|
"request_context",
|
|
235
|
+
"resolve_comment",
|
|
236
|
+
"resolve_feedback",
|
|
237
|
+
"resolve_sync_conflict",
|
|
238
|
+
"restore_session",
|
|
137
239
|
"reverse_engineer",
|
|
240
|
+
"reverse_engineer_tests",
|
|
241
|
+
"review_pr",
|
|
242
|
+
"run_mutation_hints",
|
|
243
|
+
"scaffold_plugin",
|
|
244
|
+
"scan_project",
|
|
245
|
+
"search_all_projects",
|
|
246
|
+
"search_spec_templates",
|
|
138
247
|
"security_check",
|
|
139
|
-
"suggest_mcp_server",
|
|
140
|
-
"suggest_mcps",
|
|
141
|
-
"suggest_tooling",
|
|
142
|
-
"spec_history",
|
|
143
|
-
"validate_workflow",
|
|
144
|
-
"spec_coverage",
|
|
145
|
-
"estimate_ai_cost",
|
|
146
|
-
"generate_ci",
|
|
147
|
-
"manage_hooks",
|
|
148
|
-
"start_hooks",
|
|
149
|
-
"stop_hooks",
|
|
150
|
-
"hook_status",
|
|
151
|
-
"configure_hooks",
|
|
152
|
-
"apply_template",
|
|
153
|
-
"check_spec_accuracy",
|
|
154
|
-
"estimation_accuracy_report",
|
|
155
|
-
"calibrate_estimates",
|
|
156
|
-
"update_registry",
|
|
157
|
-
"generate_planu_ci",
|
|
158
|
-
"transform_code",
|
|
159
|
-
"recommend_model",
|
|
160
|
-
"semantic_search",
|
|
161
|
-
"activate_group",
|
|
162
|
-
"list_groups",
|
|
163
|
-
"generate_ide_config",
|
|
164
|
-
"restore_session",
|
|
165
|
-
"list_sessions",
|
|
166
|
-
"export_session",
|
|
167
248
|
"security_report",
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"orchestrate_runtime",
|
|
172
|
-
"agent_swarm_status",
|
|
173
|
-
"configure_llm_providers",
|
|
174
|
-
"llm_provider_status",
|
|
175
|
-
"configure_observability",
|
|
176
|
-
"manage_plugins",
|
|
177
|
-
"scaffold_plugin",
|
|
178
|
-
"create_pr_from_spec",
|
|
179
|
-
"review_pr",
|
|
180
|
-
"create_release",
|
|
181
|
-
"generate_changelog",
|
|
182
|
-
"validate_team_results",
|
|
183
|
-
"audit_claude_config",
|
|
184
|
-
"generate_docs_site",
|
|
185
|
-
"generate_proposal",
|
|
186
|
-
"export_pdf",
|
|
187
|
-
"export_spec",
|
|
188
|
-
"analyze_spec_dependencies",
|
|
189
|
-
"validate_annotations",
|
|
190
|
-
"generate_annotations",
|
|
249
|
+
"semantic_search",
|
|
250
|
+
"send_digest",
|
|
251
|
+
"slack_notify",
|
|
191
252
|
"snapshot_spec_hashes",
|
|
192
|
-
"
|
|
193
|
-
"living_spec_watch",
|
|
194
|
-
"living_spec_status",
|
|
253
|
+
"spec_coverage",
|
|
195
254
|
"spec_diff",
|
|
196
|
-
"
|
|
197
|
-
"
|
|
198
|
-
"sync_code_to_spec",
|
|
199
|
-
"resolve_sync_conflict",
|
|
200
|
-
"registry_publish",
|
|
201
|
-
"registry_login",
|
|
202
|
-
"registry_logout",
|
|
203
|
-
"registry_whoami",
|
|
204
|
-
"scan_project",
|
|
205
|
-
"ecosystem_status",
|
|
206
|
-
"sync_ai_configs",
|
|
207
|
-
"audit_trail",
|
|
208
|
-
"generate_attestation",
|
|
209
|
-
"velocity_report",
|
|
210
|
-
"velocity_trend",
|
|
211
|
-
"branch_spec",
|
|
212
|
-
"merge_spec_branch",
|
|
213
|
-
"version_spec",
|
|
214
|
-
"diff_spec_versions",
|
|
215
|
-
"spec_version_history",
|
|
216
|
-
"decompose_spec",
|
|
217
|
-
"federate_specs",
|
|
218
|
-
"federation_status",
|
|
219
|
-
"discover_registry",
|
|
220
|
-
"publish_registry",
|
|
221
|
-
"generate_infrastructure",
|
|
255
|
+
"spec_history",
|
|
256
|
+
"spec_quality_score",
|
|
222
257
|
"spec_usage_report",
|
|
223
|
-
"
|
|
224
|
-
"resolve_feedback",
|
|
225
|
-
"resolve_comment",
|
|
226
|
-
"reply_comment",
|
|
227
|
-
"a2a_register",
|
|
228
|
-
"a2a_delegate",
|
|
229
|
-
"generate_spec_from_design",
|
|
230
|
-
"configure_oauth",
|
|
231
|
-
"elicit_requirements",
|
|
232
|
-
"red_team",
|
|
233
|
-
"generate_batch_script",
|
|
234
|
-
"generate_automation_guide",
|
|
235
|
-
"generate_spec_from_api",
|
|
236
|
-
"import_spec",
|
|
237
|
-
"bulk_import",
|
|
238
|
-
"configure_webhook",
|
|
239
|
-
"outbound_webhook_status",
|
|
240
|
-
"remove_webhook",
|
|
241
|
-
"inject_criteria",
|
|
258
|
+
"spec_version_history",
|
|
242
259
|
"split_spec",
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"
|
|
250
|
-
"remove_confluence",
|
|
251
|
-
"team_analytics",
|
|
252
|
-
"workload_distribution",
|
|
253
|
-
"export_specs_csv",
|
|
254
|
-
"reverse_engineer_tests",
|
|
255
|
-
"configure_slack",
|
|
256
|
-
"slack_notify",
|
|
257
|
-
"remove_slack",
|
|
258
|
-
"search_all_projects",
|
|
259
|
-
"validate_browser",
|
|
260
|
+
"start_hooks",
|
|
261
|
+
"stop_hooks",
|
|
262
|
+
"suggest_mcp_server",
|
|
263
|
+
"suggest_mcps",
|
|
264
|
+
"suggest_tooling",
|
|
265
|
+
"sync_ai_configs",
|
|
266
|
+
"sync_code_to_spec",
|
|
260
267
|
"sync_google_workspace",
|
|
261
|
-
"
|
|
262
|
-
"
|
|
263
|
-
"eval_skill",
|
|
264
|
-
"eval_rule",
|
|
265
|
-
"configure_jira",
|
|
268
|
+
"sync_spec_to_code",
|
|
269
|
+
"sync_to_confluence",
|
|
266
270
|
"sync_to_jira",
|
|
267
|
-
"jira_status",
|
|
268
|
-
"remove_jira",
|
|
269
|
-
"configure_linear",
|
|
270
271
|
"sync_to_linear",
|
|
271
|
-
"
|
|
272
|
-
"
|
|
273
|
-
"
|
|
274
|
-
"
|
|
275
|
-
"
|
|
276
|
-
"
|
|
277
|
-
"
|
|
272
|
+
"team_analytics",
|
|
273
|
+
"token_intelligence",
|
|
274
|
+
"token_savings_report",
|
|
275
|
+
"transform_code",
|
|
276
|
+
"triage_feedback",
|
|
277
|
+
"update_registry",
|
|
278
|
+
"validate_annotations",
|
|
278
279
|
"validate_api_contract",
|
|
279
|
-
"
|
|
280
|
-
"
|
|
281
|
-
"
|
|
280
|
+
"validate_browser",
|
|
281
|
+
"validate_team_results",
|
|
282
|
+
"validate_workflow",
|
|
283
|
+
"velocity_report",
|
|
284
|
+
"velocity_trend",
|
|
285
|
+
"version_spec",
|
|
286
|
+
"workload_distribution"
|
|
282
287
|
],
|
|
283
288
|
"alwaysAllowed": [
|
|
284
289
|
"activate_license",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { FsHookConfig, FsHooksConfig, FsHookTriggerEvent, FsHookResult } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the default hooks configuration (disabled with no hooks).
|
|
4
|
+
*/
|
|
5
|
+
export declare function getDefaultHooksConfig(): FsHooksConfig;
|
|
6
|
+
/**
|
|
7
|
+
* Loads the hooks configuration from `.planu/hooks.json` in the given project path.
|
|
8
|
+
* Returns the default config if the file does not exist.
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadHooksConfig(projectPath: string): Promise<FsHooksConfig>;
|
|
11
|
+
/**
|
|
12
|
+
* Saves the hooks configuration to `.planu/hooks.json` in the given project path.
|
|
13
|
+
* Creates the `.planu` directory if it does not exist.
|
|
14
|
+
*/
|
|
15
|
+
export declare function saveHooksConfig(projectPath: string, config: FsHooksConfig): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Returns true if `filePath` matches the given glob `pattern`.
|
|
18
|
+
* Supports `**` and `*` wildcards.
|
|
19
|
+
*/
|
|
20
|
+
export declare function matchesPattern(filePath: string, pattern: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Builds a trigger event for a filesystem hook match.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildTriggerEvent(event: FsHookConfig['event'], filePath: string, hook: FsHookConfig): FsHookTriggerEvent;
|
|
25
|
+
/**
|
|
26
|
+
* Finds all hooks in `config` that match the given event and file path,
|
|
27
|
+
* and returns the result with triggered events.
|
|
28
|
+
* Does NOT call any tools — pure logic only.
|
|
29
|
+
*/
|
|
30
|
+
export declare function processFileEvent(event: 'on_save' | 'on_create' | 'on_delete', filePath: string, config: FsHooksConfig): FsHookResult;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/filesystem-watcher/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAI9B;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,CAErD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAQjF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/F;AAsBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,GACjB,kBAAkB,CAQpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,EAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GACpB,YAAY,CAuBd"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// engine/filesystem-watcher/index.ts — SPEC-329: Filesystem watcher engine
|
|
2
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const HOOKS_FILE = '.planu/hooks.json';
|
|
5
|
+
/**
|
|
6
|
+
* Returns the default hooks configuration (disabled with no hooks).
|
|
7
|
+
*/
|
|
8
|
+
export function getDefaultHooksConfig() {
|
|
9
|
+
return { enabled: false, hooks: [] };
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Loads the hooks configuration from `.planu/hooks.json` in the given project path.
|
|
13
|
+
* Returns the default config if the file does not exist.
|
|
14
|
+
*/
|
|
15
|
+
export async function loadHooksConfig(projectPath) {
|
|
16
|
+
const filePath = join(projectPath, HOOKS_FILE);
|
|
17
|
+
try {
|
|
18
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
19
|
+
return JSON.parse(raw);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return getDefaultHooksConfig();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Saves the hooks configuration to `.planu/hooks.json` in the given project path.
|
|
27
|
+
* Creates the `.planu` directory if it does not exist.
|
|
28
|
+
*/
|
|
29
|
+
export async function saveHooksConfig(projectPath, config) {
|
|
30
|
+
const dir = join(projectPath, '.planu');
|
|
31
|
+
await mkdir(dir, { recursive: true });
|
|
32
|
+
const filePath = join(projectPath, HOOKS_FILE);
|
|
33
|
+
await writeFile(filePath, JSON.stringify(config, null, 2), 'utf-8');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Converts a glob pattern to a RegExp.
|
|
37
|
+
* Supports `**` (any path segments) and `*` (any characters within a segment).
|
|
38
|
+
* Strategy: split on `*` boundaries to escape non-wildcard parts separately.
|
|
39
|
+
*/
|
|
40
|
+
function patternToRegex(pattern) {
|
|
41
|
+
// Split by ** first, then by *
|
|
42
|
+
const parts = pattern.split('**');
|
|
43
|
+
const regexStr = parts
|
|
44
|
+
.map((part) => {
|
|
45
|
+
// Within each ** segment, handle single *
|
|
46
|
+
return part
|
|
47
|
+
.split('*')
|
|
48
|
+
.map((segment) => segment.replace(/[.+^${}()|[\]\\]/g, '\\$&'))
|
|
49
|
+
.join('[^/]*');
|
|
50
|
+
})
|
|
51
|
+
.join('.*');
|
|
52
|
+
return new RegExp(`^${regexStr}$`);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns true if `filePath` matches the given glob `pattern`.
|
|
56
|
+
* Supports `**` and `*` wildcards.
|
|
57
|
+
*/
|
|
58
|
+
export function matchesPattern(filePath, pattern) {
|
|
59
|
+
const regex = patternToRegex(pattern);
|
|
60
|
+
return regex.test(filePath);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Builds a trigger event for a filesystem hook match.
|
|
64
|
+
*/
|
|
65
|
+
export function buildTriggerEvent(event, filePath, hook) {
|
|
66
|
+
return {
|
|
67
|
+
event,
|
|
68
|
+
filePath,
|
|
69
|
+
timestamp: new Date().toISOString(),
|
|
70
|
+
matchedPattern: hook.pattern,
|
|
71
|
+
tool: hook.tool,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Finds all hooks in `config` that match the given event and file path,
|
|
76
|
+
* and returns the result with triggered events.
|
|
77
|
+
* Does NOT call any tools — pure logic only.
|
|
78
|
+
*/
|
|
79
|
+
export function processFileEvent(event, filePath, config) {
|
|
80
|
+
if (!config.enabled) {
|
|
81
|
+
return { triggered: 0, events: [], errors: [] };
|
|
82
|
+
}
|
|
83
|
+
const events = [];
|
|
84
|
+
const errors = [];
|
|
85
|
+
for (const hook of config.hooks) {
|
|
86
|
+
if (hook.event !== event) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
if (matchesPattern(filePath, hook.pattern)) {
|
|
91
|
+
events.push(buildTriggerEvent(event, filePath, hook));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
96
|
+
errors.push(`Pattern "${hook.pattern}" error: ${msg}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return { triggered: events.length, events, errors };
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/filesystem-watcher/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LivingSpecFileResult, LivingSpecCriteriaMatch } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract criteria lines from spec.md content.
|
|
4
|
+
* Returns the text after the `- [ ] ` or `- [x] ` prefix.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractCriteriaLines(specMdContent: string): string[];
|
|
7
|
+
/**
|
|
8
|
+
* Match each criterion against the scanned file results.
|
|
9
|
+
* A criterion is "met" if at least one keyword is found in any file export or path.
|
|
10
|
+
*/
|
|
11
|
+
export declare function matchCriteria(criteriaLines: string[], fileResults: LivingSpecFileResult[]): LivingSpecCriteriaMatch[];
|
|
12
|
+
//# sourceMappingURL=criteria-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria-matcher.d.ts","sourceRoot":"","sources":["../../../src/engine/living-specs/criteria-matcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AA0C1F;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAapE;AAiCD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE,oBAAoB,EAAE,GAClC,uBAAuB,EAAE,CAc3B"}
|