aiwcli 0.12.3 → 0.12.7
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/bin/dev.cmd +3 -3
- package/bin/dev.js +16 -16
- package/bin/run.cmd +3 -3
- package/bin/run.js +21 -21
- package/dist/commands/branch.js +7 -2
- package/dist/lib/bmad-installer.js +37 -37
- package/dist/lib/terminal.d.ts +2 -0
- package/dist/lib/terminal.js +57 -7
- package/dist/templates/CLAUDE.md +205 -205
- package/dist/templates/_shared/.claude/commands/handoff-resume.md +12 -64
- package/dist/templates/_shared/.claude/commands/handoff.md +12 -198
- package/dist/templates/_shared/.claude/settings.json +65 -65
- package/dist/templates/_shared/.codex/workflows/handoff.md +226 -226
- package/dist/templates/_shared/.windsurf/workflows/handoff.md +226 -226
- package/dist/templates/_shared/handoff-system/CLAUDE.md +421 -0
- package/dist/templates/_shared/{lib-ts/handoff → handoff-system/lib}/document-generator.ts +215 -216
- package/dist/templates/_shared/{lib-ts/handoff → handoff-system/lib}/handoff-reader.ts +157 -158
- package/dist/templates/_shared/{scripts → handoff-system/scripts}/resume_handoff.ts +373 -373
- package/dist/templates/_shared/{scripts → handoff-system/scripts}/save_handoff.ts +469 -358
- package/dist/templates/_shared/handoff-system/workflows/handoff-resume.md +66 -0
- package/dist/templates/_shared/{workflows → handoff-system/workflows}/handoff.md +254 -254
- package/dist/templates/_shared/hooks-ts/_utils/git-state.ts +2 -2
- package/dist/templates/_shared/hooks-ts/archive_plan.ts +159 -159
- package/dist/templates/_shared/hooks-ts/context_monitor.ts +147 -147
- package/dist/templates/_shared/hooks-ts/file-suggestion.ts +128 -128
- package/dist/templates/_shared/hooks-ts/pre_compact.ts +49 -49
- package/dist/templates/_shared/hooks-ts/session_end.ts +196 -183
- package/dist/templates/_shared/hooks-ts/session_start.ts +163 -151
- package/dist/templates/_shared/hooks-ts/task_create_capture.ts +48 -48
- package/dist/templates/_shared/hooks-ts/task_update_capture.ts +74 -74
- package/dist/templates/_shared/hooks-ts/user_prompt_submit.ts +93 -93
- package/dist/templates/_shared/lib-ts/CLAUDE.md +367 -367
- package/dist/templates/_shared/lib-ts/base/atomic-write.ts +138 -138
- package/dist/templates/_shared/lib-ts/base/constants.ts +303 -303
- package/dist/templates/_shared/lib-ts/base/git-state.ts +58 -58
- package/dist/templates/_shared/lib-ts/base/hook-utils.ts +582 -582
- package/dist/templates/_shared/lib-ts/base/inference.ts +301 -301
- package/dist/templates/_shared/lib-ts/base/logger.ts +247 -247
- package/dist/templates/_shared/lib-ts/base/state-io.ts +202 -130
- package/dist/templates/_shared/lib-ts/base/stop-words.ts +184 -184
- package/dist/templates/_shared/lib-ts/base/subprocess-utils.ts +56 -0
- package/dist/templates/_shared/lib-ts/base/utils.ts +184 -184
- package/dist/templates/_shared/lib-ts/context/context-formatter.ts +566 -560
- package/dist/templates/_shared/lib-ts/context/context-selector.ts +524 -515
- package/dist/templates/_shared/lib-ts/context/context-store.ts +712 -668
- package/dist/templates/_shared/lib-ts/context/plan-manager.ts +312 -312
- package/dist/templates/_shared/lib-ts/context/task-tracker.ts +185 -185
- package/dist/templates/_shared/lib-ts/package.json +20 -20
- package/dist/templates/_shared/lib-ts/templates/formatters.ts +102 -102
- package/dist/templates/_shared/lib-ts/templates/plan-context.ts +58 -58
- package/dist/templates/_shared/lib-ts/tsconfig.json +13 -13
- package/dist/templates/_shared/lib-ts/types.ts +186 -180
- package/dist/templates/_shared/scripts/resolve_context.ts +33 -33
- package/dist/templates/_shared/scripts/status_line.ts +690 -690
- package/dist/templates/cc-native/.claude/commands/{rlm → cc-native/rlm}/ask.md +136 -136
- package/dist/templates/cc-native/.claude/commands/{rlm → cc-native/rlm}/index.md +21 -21
- package/dist/templates/cc-native/.claude/commands/{rlm → cc-native/rlm}/overview.md +56 -56
- package/dist/templates/cc-native/.claude/commands/cc-native/specdev.md +10 -10
- package/dist/templates/cc-native/.windsurf/workflows/cc-native/fix.md +8 -8
- package/dist/templates/cc-native/.windsurf/workflows/cc-native/implement.md +8 -8
- package/dist/templates/cc-native/.windsurf/workflows/cc-native/research.md +8 -8
- package/dist/templates/cc-native/CC-NATIVE-README.md +189 -189
- package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +304 -304
- package/dist/templates/cc-native/_cc-native/agents/CLAUDE.md +143 -143
- package/dist/templates/cc-native/_cc-native/agents/PLAN-ORCHESTRATOR.md +213 -213
- package/dist/templates/cc-native/_cc-native/agents/plan-questions/PLAN-QUESTIONER.md +70 -70
- package/dist/templates/cc-native/_cc-native/cc-native.config.json +96 -96
- package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +247 -247
- package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +76 -76
- package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_subagent.ts +54 -54
- package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_write.ts +51 -51
- package/dist/templates/cc-native/_cc-native/hooks/mark_questions_asked.ts +53 -53
- package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.ts +61 -61
- package/dist/templates/cc-native/_cc-native/lib-ts/agent-selection.ts +163 -163
- package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +156 -156
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/format.ts +597 -597
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/index.ts +26 -26
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/tracker.ts +107 -107
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/write.ts +119 -119
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +21 -21
- package/dist/templates/cc-native/_cc-native/lib-ts/cc-native-state.ts +319 -319
- package/dist/templates/cc-native/_cc-native/lib-ts/cli-output-parser.ts +144 -144
- package/dist/templates/cc-native/_cc-native/lib-ts/config.ts +57 -57
- package/dist/templates/cc-native/_cc-native/lib-ts/constants.ts +83 -83
- package/dist/templates/cc-native/_cc-native/lib-ts/corroboration.ts +119 -119
- package/dist/templates/cc-native/_cc-native/lib-ts/debug.ts +79 -79
- package/dist/templates/cc-native/_cc-native/lib-ts/graduation.ts +132 -132
- package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +116 -116
- package/dist/templates/cc-native/_cc-native/lib-ts/json-parser.ts +168 -168
- package/dist/templates/cc-native/_cc-native/lib-ts/orchestrator.ts +70 -70
- package/dist/templates/cc-native/_cc-native/lib-ts/output-builder.ts +130 -130
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-discovery.ts +80 -80
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-enhancement.ts +41 -41
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-questions.ts +101 -101
- package/dist/templates/cc-native/_cc-native/lib-ts/review-pipeline.ts +511 -511
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/agent.ts +71 -71
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/base/base-agent.ts +217 -217
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/index.ts +12 -12
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/claude-agent.ts +66 -65
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/codex-agent.ts +184 -184
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/gemini-agent.ts +39 -39
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/orchestrator-claude-agent.ts +196 -195
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/schemas.ts +201 -201
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/types.ts +21 -21
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/CLAUDE.md +480 -480
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/embedding-indexer.ts +287 -287
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/hyde.ts +148 -148
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/index.ts +54 -54
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/logger.ts +58 -58
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/ollama-client.ts +208 -208
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/retrieval-pipeline.ts +460 -460
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-indexer.ts +446 -447
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-loader.ts +280 -280
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-searcher.ts +274 -274
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/types.ts +201 -201
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/vector-store.ts +278 -278
- package/dist/templates/cc-native/_cc-native/lib-ts/settings.ts +184 -184
- package/dist/templates/cc-native/_cc-native/lib-ts/state.ts +275 -275
- package/dist/templates/cc-native/_cc-native/lib-ts/tsconfig.json +18 -18
- package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +329 -329
- package/dist/templates/cc-native/_cc-native/lib-ts/verdict.ts +72 -72
- package/dist/templates/cc-native/_cc-native/workflows/specdev.md +9 -9
- package/oclif.manifest.json +1 -1
- package/package.json +108 -108
- package/dist/templates/cc-native/_cc-native/lib-ts/nul +0 -3
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stop words for context ID generation.
|
|
3
|
-
*
|
|
4
|
-
* Generated from analysis of 1,424 prompts, context summaries, and plan files.
|
|
5
|
-
* Words that appear frequently but don't help identify the specific task.
|
|
6
|
-
*
|
|
7
|
-
* ACTION VERBS ARE INTENTIONALLY EXCLUDED:
|
|
8
|
-
* add, fix, update, create, implement, refactor, migrate, debug, remove, change,
|
|
9
|
-
* move, rename, delete, build, test, deploy, verify, analyze, modify, write, run,
|
|
10
|
-
* check, replace, save, sync, load, extract, install, clean, merge, etc.
|
|
11
|
-
*
|
|
12
|
-
* See SPEC.md §14.1
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
export const STOP_WORDS: ReadonlySet<string> = new Set([
|
|
16
|
-
// ARTICLES
|
|
17
|
-
"a", "about", "above",
|
|
18
|
-
|
|
19
|
-
"absolutely", "accordingly", "across", "active", "actually", "after", "afterwards", "against", "ago", "ah",
|
|
20
|
-
"aiw", "all", "allow", "almost", "along", "already", "alright", "also",
|
|
21
|
-
"alternatively", "although", "always", // AUXILIARY/MODAL VERBS
|
|
22
|
-
"am", "among", "an", // CONJUNCTIONS
|
|
23
|
-
"and", "another",
|
|
24
|
-
"any", "anybody", "anyone", "anything", "anyway", "anyways", "apparently", "appear",
|
|
25
|
-
"are", "aren", "arent", "args", "around", "as", "ask",
|
|
26
|
-
"assert", "async", "at", // SINGLE LETTERS
|
|
27
|
-
"b",
|
|
28
|
-
|
|
29
|
-
"based", "basic", "basically", "bat", "be", "because", "become",
|
|
30
|
-
"been", "before", "begin", "behind", "being",
|
|
31
|
-
"below", "below", "beside", "besides", "between", "beyond", "block",
|
|
32
|
-
|
|
33
|
-
"both", "but", "by", "c", "can", "cant", "case",
|
|
34
|
-
"cases", "cause", "cc", "certainly", "chunk",
|
|
35
|
-
|
|
36
|
-
"clarification", "class", "clearly", "come",
|
|
37
|
-
|
|
38
|
-
"complete", "completely", "consequently", "consider",
|
|
39
|
-
|
|
40
|
-
"const", "contain", "contains", "continue", "conversely", "correct",
|
|
41
|
-
"correctly", "could", "couldn", "couldnt", "critical", "current",
|
|
42
|
-
"currently", "d",
|
|
43
|
-
|
|
44
|
-
"def", "definitely", "dict", "did", "didn", "didnt", "different", "directory",
|
|
45
|
-
"do", "does", "doesn", "doesn",
|
|
46
|
-
"doesnt", "doing", "don", "done", "dont",
|
|
47
|
-
"down", "during", "e", "each", "eh", "eight", "either", "elif", "else",
|
|
48
|
-
|
|
49
|
-
"empty", "end", "enough", "entirely", "eprint", "er",
|
|
50
|
-
"essentially", // SHORT NOISE
|
|
51
|
-
"etc", "eventually", "every", "everybody", "everyone", "everything",
|
|
52
|
-
"exactly", "example", "examples", "except", "exe",
|
|
53
|
-
|
|
54
|
-
"existing", "expect", "expected", "f", "false",
|
|
55
|
-
|
|
56
|
-
"feature", "features", "feel", "few", "finally", "find", "first",
|
|
57
|
-
"five", "folder", "follow", "following", "footer", "for", "format",
|
|
58
|
-
"four", "from", "full", "furthermore", "g",
|
|
59
|
-
"general", "get", "getting", "give",
|
|
60
|
-
|
|
61
|
-
// COMMON NON-ACTION VERBS
|
|
62
|
-
"go", "going", "gonna", "gotta",
|
|
63
|
-
"group", "h", "had", "hadn", "hadnt", "has", "hasn",
|
|
64
|
-
"hasnt", "have", "haven", "havent", "having", "he", "header",
|
|
65
|
-
|
|
66
|
-
"hello", "help", "hence", "her", "her", // ADVERBS OF PLACE/TIME
|
|
67
|
-
"here", "heres", "hers", "herself",
|
|
68
|
-
"hes", "hey", "hi", // GENERIC ADJECTIVES
|
|
69
|
-
"high", "him", "himself", "his", "hm",
|
|
70
|
-
"hmm", "how",
|
|
71
|
-
|
|
72
|
-
// LINKING/TRANSITION WORDS
|
|
73
|
-
"however", "huh", // PRONOUNS - Personal
|
|
74
|
-
"i", "id", "if", "ill", // CONTRACTED FORMS
|
|
75
|
-
"im",
|
|
76
|
-
"immediately", "import", "important", "in", "include", "index", // GENERIC TECHNICAL NOUNS
|
|
77
|
-
"information",
|
|
78
|
-
"inside", "instead", "into", "is", "isn",
|
|
79
|
-
"isnt", "issue", "it", "item", "items", "its",
|
|
80
|
-
"itself", "ive", "j", "js", "json",
|
|
81
|
-
|
|
82
|
-
// FILLER/HEDGE WORDS
|
|
83
|
-
"just", "k", "keep", "kind", "kinda", "know", "l", "lambda", "last",
|
|
84
|
-
"later", "least", "len", "less", "let", "lets", "level", "like",
|
|
85
|
-
"likewise", "line", "lines", "list", "literally",
|
|
86
|
-
"ll", "look", "looking", "low", "m", "main",
|
|
87
|
-
|
|
88
|
-
"make", "making", "manual", "many", "may", "maybe", "md",
|
|
89
|
-
"me", "mean", "meanwhile", "method", "might", "mine", "mode",
|
|
90
|
-
"more", "moreover", "most", "much", "multiple", "must",
|
|
91
|
-
|
|
92
|
-
// PRONOUNS - Possessive
|
|
93
|
-
"my", "myself", "n", "nah", "near", "nearly", "need", "needed",
|
|
94
|
-
"neither", "never", "nevertheless", "new", "next", "nine", // NEGATION
|
|
95
|
-
"no", "nobody",
|
|
96
|
-
"none", "none", "nonetheless", "no one", "nope", "nor",
|
|
97
|
-
"not", "nothing", "now", "o", "obviously", "of",
|
|
98
|
-
"off", "often",
|
|
99
|
-
|
|
100
|
-
"oh", "ok", "okay", "on", "one", "ones",
|
|
101
|
-
"only", "onto", "option", "optional", "options",
|
|
102
|
-
"or", "other", "otherwise", "our", "ours",
|
|
103
|
-
|
|
104
|
-
"ourselves", "out", "outside", "over", "overall", "p", "part", "parts", "pass",
|
|
105
|
-
|
|
106
|
-
"per", "perhaps", "phase",
|
|
107
|
-
"pl", "please",
|
|
108
|
-
"point", "points", "possibly", "pretty", "previously", "primary", "probably",
|
|
109
|
-
"process", "proper", "provide", "provided", "purpose",
|
|
110
|
-
"put", // FILE EXTENSIONS
|
|
111
|
-
"py", "q", "question", // QUERY LANGUAGE
|
|
112
|
-
"questions",
|
|
113
|
-
"quite", "r", "rather",
|
|
114
|
-
|
|
115
|
-
// FRAGMENT WORDS
|
|
116
|
-
"re", "real", "really", "recently",
|
|
117
|
-
|
|
118
|
-
"region", "remain", "require",
|
|
119
|
-
|
|
120
|
-
"required", "result", "return", "right", "s", "same", "say",
|
|
121
|
-
"secondary", // DOCUMENT/CODE STRUCTURE
|
|
122
|
-
"section", "see", "seem",
|
|
123
|
-
// PROGRAMMING KEYWORDS
|
|
124
|
-
"self", "set", "seven", "several",
|
|
125
|
-
"shall", "she", "shes", "should",
|
|
126
|
-
"shouldn", "shouldnt", "show", "similarly", "simple",
|
|
127
|
-
|
|
128
|
-
"simply", "since", "single", "six", "so", // QUANTIFIERS
|
|
129
|
-
"some", "somebody", // PRONOUNS - Indefinite
|
|
130
|
-
"someone",
|
|
131
|
-
"something", "sometimes", "somewhat", "soon", "sorta", "source", "specific", "stable",
|
|
132
|
-
"start", "state", "status", "stay", // STRUCTURAL WORDS
|
|
133
|
-
"step", "steps",
|
|
134
|
-
|
|
135
|
-
"still", "str", "stuff", "such", "sys", "t",
|
|
136
|
-
"take", "tell", "ten", "that", "thats", "the",
|
|
137
|
-
"their", "theirs", "them", "themselves", "then", "there",
|
|
138
|
-
|
|
139
|
-
"therefore", "theres", "these", "they", "theyre", "theyve",
|
|
140
|
-
// OVERLY GENERIC TERMS
|
|
141
|
-
"thing", "things", "think", // PRONOUNS - Demonstrative
|
|
142
|
-
"this", "those", "though", "three",
|
|
143
|
-
"through", "thus", "time", "times",
|
|
144
|
-
|
|
145
|
-
// PREPOSITIONS
|
|
146
|
-
"to", "today", "toml", "tomorrow", // SHORT FILLER
|
|
147
|
-
"too", "totally",
|
|
148
|
-
"toward", "towards", "true", "try", "trying", "ts",
|
|
149
|
-
|
|
150
|
-
// NUMBER WORDS
|
|
151
|
-
"two", "type", "types", "u", "uh", // SPEECH-TO-TEXT FILLERS (STT artifacts from voice input)
|
|
152
|
-
"um", "under", "unless",
|
|
153
|
-
|
|
154
|
-
"until", "up", "upon", "us", "used", "uses", // COMMON CODING TERMS
|
|
155
|
-
"using",
|
|
156
|
-
"v", "value", "ve", "version", "very", "via", "w",
|
|
157
|
-
"wanna", // COMMON REQUEST PHRASES
|
|
158
|
-
"want", "was", "wasn", "wasnt", "way", "ways",
|
|
159
|
-
"we", "well", "were", "weren", "werent", "weve", // QUESTION WORDS
|
|
160
|
-
"what",
|
|
161
|
-
"whats", "when", "whenever", "where", "whereas",
|
|
162
|
-
|
|
163
|
-
"wherever", "whether", "which", "while",
|
|
164
|
-
|
|
165
|
-
// PRONOUNS - Relative
|
|
166
|
-
"who", "whom", "whos", "whose", "why", "will", "with", "within", "without",
|
|
167
|
-
|
|
168
|
-
"won", "wont", "work", "working", "works", "would", "wouldn", "wouldnt", "x", "y", "yaml", "yeah", "yep", "yes",
|
|
169
|
-
"yesterday", "yet", "yield", "you", "youll", "your", "youre", "yours",
|
|
170
|
-
|
|
171
|
-
"yourself", "youve", "yup", "z",
|
|
172
|
-
]);
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Filter stop words from text.
|
|
176
|
-
* Splits on whitespace, removes words in STOP_WORDS set and single-char words.
|
|
177
|
-
* See SPEC.md §6.4
|
|
178
|
-
*/
|
|
179
|
-
export function filterStopWords(text: string): string {
|
|
180
|
-
return text
|
|
181
|
-
.split(/\s+/)
|
|
182
|
-
.filter((word) => word.length > 1 && !STOP_WORDS.has(word.toLowerCase()))
|
|
183
|
-
.join(" ");
|
|
184
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Stop words for context ID generation.
|
|
3
|
+
*
|
|
4
|
+
* Generated from analysis of 1,424 prompts, context summaries, and plan files.
|
|
5
|
+
* Words that appear frequently but don't help identify the specific task.
|
|
6
|
+
*
|
|
7
|
+
* ACTION VERBS ARE INTENTIONALLY EXCLUDED:
|
|
8
|
+
* add, fix, update, create, implement, refactor, migrate, debug, remove, change,
|
|
9
|
+
* move, rename, delete, build, test, deploy, verify, analyze, modify, write, run,
|
|
10
|
+
* check, replace, save, sync, load, extract, install, clean, merge, etc.
|
|
11
|
+
*
|
|
12
|
+
* See SPEC.md §14.1
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export const STOP_WORDS: ReadonlySet<string> = new Set([
|
|
16
|
+
// ARTICLES
|
|
17
|
+
"a", "about", "above",
|
|
18
|
+
|
|
19
|
+
"absolutely", "accordingly", "across", "active", "actually", "after", "afterwards", "against", "ago", "ah",
|
|
20
|
+
"aiw", "all", "allow", "almost", "along", "already", "alright", "also",
|
|
21
|
+
"alternatively", "although", "always", // AUXILIARY/MODAL VERBS
|
|
22
|
+
"am", "among", "an", // CONJUNCTIONS
|
|
23
|
+
"and", "another",
|
|
24
|
+
"any", "anybody", "anyone", "anything", "anyway", "anyways", "apparently", "appear",
|
|
25
|
+
"are", "aren", "arent", "args", "around", "as", "ask",
|
|
26
|
+
"assert", "async", "at", // SINGLE LETTERS
|
|
27
|
+
"b",
|
|
28
|
+
|
|
29
|
+
"based", "basic", "basically", "bat", "be", "because", "become",
|
|
30
|
+
"been", "before", "begin", "behind", "being",
|
|
31
|
+
"below", "below", "beside", "besides", "between", "beyond", "block",
|
|
32
|
+
|
|
33
|
+
"both", "but", "by", "c", "can", "cant", "case",
|
|
34
|
+
"cases", "cause", "cc", "certainly", "chunk",
|
|
35
|
+
|
|
36
|
+
"clarification", "class", "clearly", "come",
|
|
37
|
+
|
|
38
|
+
"complete", "completely", "consequently", "consider",
|
|
39
|
+
|
|
40
|
+
"const", "contain", "contains", "continue", "conversely", "correct",
|
|
41
|
+
"correctly", "could", "couldn", "couldnt", "critical", "current",
|
|
42
|
+
"currently", "d",
|
|
43
|
+
|
|
44
|
+
"def", "definitely", "dict", "did", "didn", "didnt", "different", "directory",
|
|
45
|
+
"do", "does", "doesn", "doesn",
|
|
46
|
+
"doesnt", "doing", "don", "done", "dont",
|
|
47
|
+
"down", "during", "e", "each", "eh", "eight", "either", "elif", "else",
|
|
48
|
+
|
|
49
|
+
"empty", "end", "enough", "entirely", "eprint", "er",
|
|
50
|
+
"essentially", // SHORT NOISE
|
|
51
|
+
"etc", "eventually", "every", "everybody", "everyone", "everything",
|
|
52
|
+
"exactly", "example", "examples", "except", "exe",
|
|
53
|
+
|
|
54
|
+
"existing", "expect", "expected", "f", "false",
|
|
55
|
+
|
|
56
|
+
"feature", "features", "feel", "few", "finally", "find", "first",
|
|
57
|
+
"five", "folder", "follow", "following", "footer", "for", "format",
|
|
58
|
+
"four", "from", "full", "furthermore", "g",
|
|
59
|
+
"general", "get", "getting", "give",
|
|
60
|
+
|
|
61
|
+
// COMMON NON-ACTION VERBS
|
|
62
|
+
"go", "going", "gonna", "gotta",
|
|
63
|
+
"group", "h", "had", "hadn", "hadnt", "has", "hasn",
|
|
64
|
+
"hasnt", "have", "haven", "havent", "having", "he", "header",
|
|
65
|
+
|
|
66
|
+
"hello", "help", "hence", "her", "her", // ADVERBS OF PLACE/TIME
|
|
67
|
+
"here", "heres", "hers", "herself",
|
|
68
|
+
"hes", "hey", "hi", // GENERIC ADJECTIVES
|
|
69
|
+
"high", "him", "himself", "his", "hm",
|
|
70
|
+
"hmm", "how",
|
|
71
|
+
|
|
72
|
+
// LINKING/TRANSITION WORDS
|
|
73
|
+
"however", "huh", // PRONOUNS - Personal
|
|
74
|
+
"i", "id", "if", "ill", // CONTRACTED FORMS
|
|
75
|
+
"im",
|
|
76
|
+
"immediately", "import", "important", "in", "include", "index", // GENERIC TECHNICAL NOUNS
|
|
77
|
+
"information",
|
|
78
|
+
"inside", "instead", "into", "is", "isn",
|
|
79
|
+
"isnt", "issue", "it", "item", "items", "its",
|
|
80
|
+
"itself", "ive", "j", "js", "json",
|
|
81
|
+
|
|
82
|
+
// FILLER/HEDGE WORDS
|
|
83
|
+
"just", "k", "keep", "kind", "kinda", "know", "l", "lambda", "last",
|
|
84
|
+
"later", "least", "len", "less", "let", "lets", "level", "like",
|
|
85
|
+
"likewise", "line", "lines", "list", "literally",
|
|
86
|
+
"ll", "look", "looking", "low", "m", "main",
|
|
87
|
+
|
|
88
|
+
"make", "making", "manual", "many", "may", "maybe", "md",
|
|
89
|
+
"me", "mean", "meanwhile", "method", "might", "mine", "mode",
|
|
90
|
+
"more", "moreover", "most", "much", "multiple", "must",
|
|
91
|
+
|
|
92
|
+
// PRONOUNS - Possessive
|
|
93
|
+
"my", "myself", "n", "nah", "near", "nearly", "need", "needed",
|
|
94
|
+
"neither", "never", "nevertheless", "new", "next", "nine", // NEGATION
|
|
95
|
+
"no", "nobody",
|
|
96
|
+
"none", "none", "nonetheless", "no one", "nope", "nor",
|
|
97
|
+
"not", "nothing", "now", "o", "obviously", "of",
|
|
98
|
+
"off", "often",
|
|
99
|
+
|
|
100
|
+
"oh", "ok", "okay", "on", "one", "ones",
|
|
101
|
+
"only", "onto", "option", "optional", "options",
|
|
102
|
+
"or", "other", "otherwise", "our", "ours",
|
|
103
|
+
|
|
104
|
+
"ourselves", "out", "outside", "over", "overall", "p", "part", "parts", "pass",
|
|
105
|
+
|
|
106
|
+
"per", "perhaps", "phase",
|
|
107
|
+
"pl", "please",
|
|
108
|
+
"point", "points", "possibly", "pretty", "previously", "primary", "probably",
|
|
109
|
+
"process", "proper", "provide", "provided", "purpose",
|
|
110
|
+
"put", // FILE EXTENSIONS
|
|
111
|
+
"py", "q", "question", // QUERY LANGUAGE
|
|
112
|
+
"questions",
|
|
113
|
+
"quite", "r", "rather",
|
|
114
|
+
|
|
115
|
+
// FRAGMENT WORDS
|
|
116
|
+
"re", "real", "really", "recently",
|
|
117
|
+
|
|
118
|
+
"region", "remain", "require",
|
|
119
|
+
|
|
120
|
+
"required", "result", "return", "right", "s", "same", "say",
|
|
121
|
+
"secondary", // DOCUMENT/CODE STRUCTURE
|
|
122
|
+
"section", "see", "seem",
|
|
123
|
+
// PROGRAMMING KEYWORDS
|
|
124
|
+
"self", "set", "seven", "several",
|
|
125
|
+
"shall", "she", "shes", "should",
|
|
126
|
+
"shouldn", "shouldnt", "show", "similarly", "simple",
|
|
127
|
+
|
|
128
|
+
"simply", "since", "single", "six", "so", // QUANTIFIERS
|
|
129
|
+
"some", "somebody", // PRONOUNS - Indefinite
|
|
130
|
+
"someone",
|
|
131
|
+
"something", "sometimes", "somewhat", "soon", "sorta", "source", "specific", "stable",
|
|
132
|
+
"start", "state", "status", "stay", // STRUCTURAL WORDS
|
|
133
|
+
"step", "steps",
|
|
134
|
+
|
|
135
|
+
"still", "str", "stuff", "such", "sys", "t",
|
|
136
|
+
"take", "tell", "ten", "that", "thats", "the",
|
|
137
|
+
"their", "theirs", "them", "themselves", "then", "there",
|
|
138
|
+
|
|
139
|
+
"therefore", "theres", "these", "they", "theyre", "theyve",
|
|
140
|
+
// OVERLY GENERIC TERMS
|
|
141
|
+
"thing", "things", "think", // PRONOUNS - Demonstrative
|
|
142
|
+
"this", "those", "though", "three",
|
|
143
|
+
"through", "thus", "time", "times",
|
|
144
|
+
|
|
145
|
+
// PREPOSITIONS
|
|
146
|
+
"to", "today", "toml", "tomorrow", // SHORT FILLER
|
|
147
|
+
"too", "totally",
|
|
148
|
+
"toward", "towards", "true", "try", "trying", "ts",
|
|
149
|
+
|
|
150
|
+
// NUMBER WORDS
|
|
151
|
+
"two", "type", "types", "u", "uh", // SPEECH-TO-TEXT FILLERS (STT artifacts from voice input)
|
|
152
|
+
"um", "under", "unless",
|
|
153
|
+
|
|
154
|
+
"until", "up", "upon", "us", "used", "uses", // COMMON CODING TERMS
|
|
155
|
+
"using",
|
|
156
|
+
"v", "value", "ve", "version", "very", "via", "w",
|
|
157
|
+
"wanna", // COMMON REQUEST PHRASES
|
|
158
|
+
"want", "was", "wasn", "wasnt", "way", "ways",
|
|
159
|
+
"we", "well", "were", "weren", "werent", "weve", // QUESTION WORDS
|
|
160
|
+
"what",
|
|
161
|
+
"whats", "when", "whenever", "where", "whereas",
|
|
162
|
+
|
|
163
|
+
"wherever", "whether", "which", "while",
|
|
164
|
+
|
|
165
|
+
// PRONOUNS - Relative
|
|
166
|
+
"who", "whom", "whos", "whose", "why", "will", "with", "within", "without",
|
|
167
|
+
|
|
168
|
+
"won", "wont", "work", "working", "works", "would", "wouldn", "wouldnt", "x", "y", "yaml", "yeah", "yep", "yes",
|
|
169
|
+
"yesterday", "yet", "yield", "you", "youll", "your", "youre", "yours",
|
|
170
|
+
|
|
171
|
+
"yourself", "youve", "yup", "z",
|
|
172
|
+
]);
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Filter stop words from text.
|
|
176
|
+
* Splits on whitespace, removes words in STOP_WORDS set and single-char words.
|
|
177
|
+
* See SPEC.md §6.4
|
|
178
|
+
*/
|
|
179
|
+
export function filterStopWords(text: string): string {
|
|
180
|
+
return text
|
|
181
|
+
.split(/\s+/)
|
|
182
|
+
.filter((word) => word.length > 1 && !STOP_WORDS.has(word.toLowerCase()))
|
|
183
|
+
.join(" ");
|
|
184
|
+
}
|
|
@@ -4,6 +4,54 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { execSync, execFile } from "node:child_process";
|
|
7
|
+
import type { ChildProcess } from "node:child_process";
|
|
8
|
+
|
|
9
|
+
// ─── Child Process Cleanup ─────────────────────────────────────────────────
|
|
10
|
+
//
|
|
11
|
+
// Track all spawned child processes to prevent orphaned Node.js processes.
|
|
12
|
+
//
|
|
13
|
+
// Problem: When parent process exits (Ctrl+C, abnormal termination), child
|
|
14
|
+
// processes spawned via execFile can become orphaned if they haven't completed.
|
|
15
|
+
//
|
|
16
|
+
// Solution: Track children in a Set, register exit/signal handlers to kill all
|
|
17
|
+
// tracked children before parent exits.
|
|
18
|
+
//
|
|
19
|
+
// Windows behavior: On Windows with shell:true, execFile spawns cmd.exe which
|
|
20
|
+
// spawns the actual node.exe. Using SIGKILL ensures both are terminated.
|
|
21
|
+
|
|
22
|
+
const childProcesses = new Set<ChildProcess>();
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Cleanup all tracked child processes.
|
|
26
|
+
* Called by exit and signal handlers.
|
|
27
|
+
*/
|
|
28
|
+
function cleanupChildren(): void {
|
|
29
|
+
childProcesses.forEach((child) => {
|
|
30
|
+
try {
|
|
31
|
+
// Use SIGKILL for forceful termination (important on Windows with shell)
|
|
32
|
+
child.kill("SIGKILL");
|
|
33
|
+
} catch {
|
|
34
|
+
// Ignore errors (child may have already exited)
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
childProcesses.clear();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Register exit handler (runs when process exits normally)
|
|
41
|
+
process.on("exit", () => {
|
|
42
|
+
cleanupChildren();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Register signal handlers (Ctrl+C, kill command)
|
|
46
|
+
process.on("SIGINT", () => {
|
|
47
|
+
cleanupChildren();
|
|
48
|
+
process.exit(130); // Standard exit code for SIGINT
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
process.on("SIGTERM", () => {
|
|
52
|
+
cleanupChildren();
|
|
53
|
+
process.exit(143); // Standard exit code for SIGTERM
|
|
54
|
+
});
|
|
7
55
|
|
|
8
56
|
/**
|
|
9
57
|
* Check if this is an internal subprocess call.
|
|
@@ -172,6 +220,14 @@ export function execFileAsync(
|
|
|
172
220
|
},
|
|
173
221
|
);
|
|
174
222
|
|
|
223
|
+
// Track child process for cleanup on abnormal parent exit
|
|
224
|
+
childProcesses.add(child);
|
|
225
|
+
|
|
226
|
+
// Remove from tracking when child exits (normal completion)
|
|
227
|
+
child.on("exit", () => {
|
|
228
|
+
childProcesses.delete(child);
|
|
229
|
+
});
|
|
230
|
+
|
|
175
231
|
// Pipe input to stdin if provided
|
|
176
232
|
if (options?.input != null && child.stdin) {
|
|
177
233
|
child.stdin.write(options.input);
|