@ryuenn3123/agentic-senior-core 4.4.0 → 5.2.0

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 (201) hide show
  1. package/.agents/plugins/agentic-senior-core/plugin.json +3 -0
  2. package/.agents/plugins/agentic-senior-core/rules/agentic-senior-core.md +131 -0
  3. package/.agents/plugins/agentic-senior-core/skills/asc/SKILL.md +16 -0
  4. package/.agents/plugins/agentic-senior-core/skills/asc-audit/SKILL.md +28 -0
  5. package/.agents/plugins/agentic-senior-core/skills/asc-refactor/SKILL.md +35 -0
  6. package/.agents/plugins/agentic-senior-core/skills/asc-review/SKILL.md +54 -0
  7. package/.agents/rules/agentic-senior-core.md +131 -0
  8. package/.claude-plugin/marketplace.json +17 -0
  9. package/.claude-plugin/plugin.json +17 -0
  10. package/.clinerules/agentic-senior-core.md +94 -0
  11. package/.codex-plugin/plugin.json +24 -0
  12. package/.cursor/rules/agentic-senior-core.mdc +99 -0
  13. package/.devin-plugin/plugin.json +13 -0
  14. package/.github/copilot-instructions.md +94 -0
  15. package/.github/plugin/marketplace.json +20 -0
  16. package/.github/plugin/plugin.json +16 -0
  17. package/.kiro/steering/agentic-senior-core.md +94 -0
  18. package/.openclaw/skills/asc/SKILL.md +23 -0
  19. package/.openclaw/skills/asc-audit/SKILL.md +28 -0
  20. package/.openclaw/skills/asc-review/SKILL.md +54 -0
  21. package/.opencode/plugins/agentic-senior-core.mjs +31 -0
  22. package/.windsurf/rules/agentic-senior-core.md +94 -0
  23. package/AGENTS.md +126 -127
  24. package/CONTRIBUTING.md +93 -63
  25. package/README.md +190 -110
  26. package/__init__.py +61 -0
  27. package/bin/agentic-senior-core.js +42 -41
  28. package/commands/asc-audit.md +1 -0
  29. package/commands/asc-audit.toml +2 -0
  30. package/commands/asc-help.md +9 -0
  31. package/commands/asc-help.toml +2 -0
  32. package/commands/asc-refactor.md +1 -0
  33. package/commands/asc-refactor.toml +2 -0
  34. package/commands/asc-review.md +1 -0
  35. package/commands/asc-review.toml +2 -0
  36. package/gemini-extension.json +10 -0
  37. package/hooks/copilot-hooks.json +21 -0
  38. package/hooks/hooks.json +31 -0
  39. package/hooks/session-start.js +36 -0
  40. package/hooks/subagent-start.js +38 -0
  41. package/lib/cli/commands/adapter.mjs +109 -0
  42. package/lib/cli/commands/clean.mjs +63 -0
  43. package/lib/cli/commands/status.mjs +94 -0
  44. package/package.json +43 -60
  45. package/plugin.yaml +16 -0
  46. package/scripts/uninstall.js +38 -0
  47. package/skills/asc/SKILL.md +16 -0
  48. package/skills/asc-audit/SKILL.md +28 -0
  49. package/skills/asc-refactor/SKILL.md +35 -0
  50. package/skills/asc-review/SKILL.md +54 -0
  51. package/.agent-context/policies/llm-judge-threshold.json +0 -29
  52. package/.agent-context/prompts/bootstrap-design.md +0 -63
  53. package/.agent-context/prompts/compact-natural-mode.md +0 -100
  54. package/.agent-context/prompts/init-project.md +0 -60
  55. package/.agent-context/prompts/refactor.md +0 -38
  56. package/.agent-context/prompts/review-code.md +0 -31
  57. package/.agent-context/review-checklists/architecture-review.md +0 -57
  58. package/.agent-context/review-checklists/pr-checklist.md +0 -134
  59. package/.agent-context/rules/api-docs.md +0 -24
  60. package/.agent-context/rules/api-versioning.md +0 -16
  61. package/.agent-context/rules/architecture.md +0 -38
  62. package/.agent-context/rules/background-jobs.md +0 -17
  63. package/.agent-context/rules/config-and-flags.md +0 -16
  64. package/.agent-context/rules/database-design.md +0 -18
  65. package/.agent-context/rules/docker-runtime.md +0 -17
  66. package/.agent-context/rules/error-handling.md +0 -16
  67. package/.agent-context/rules/event-driven.md +0 -16
  68. package/.agent-context/rules/frontend-architecture.md +0 -54
  69. package/.agent-context/rules/microservices.md +0 -16
  70. package/.agent-context/rules/migrations.md +0 -16
  71. package/.agent-context/rules/observability.md +0 -16
  72. package/.agent-context/rules/performance.md +0 -16
  73. package/.agent-context/rules/realtime.md +0 -16
  74. package/.agent-context/rules/resilience.md +0 -18
  75. package/.agent-context/rules/security.md +0 -18
  76. package/.agent-context/rules/testing.md +0 -16
  77. package/.agent-context/state/README.md +0 -25
  78. package/.agent-context/state/architecture-map.md +0 -40
  79. package/.agent-context/state/benchmark-comparison-schema.json +0 -181
  80. package/.agent-context/state/benchmark-reproducibility.json +0 -87
  81. package/.agent-context/state/benchmark-thresholds.json +0 -10
  82. package/.agent-context/state/benchmark-writer-judge-config.json +0 -58
  83. package/.agent-context/state/dependency-map.md +0 -41
  84. package/.agent-context/state/memory-adapter-contract.json +0 -52
  85. package/.agent-context/state/memory-schema-v1.json +0 -88
  86. package/GEMINI.md +0 -1
  87. package/benchmarks/README.md +0 -60
  88. package/benchmarks/compact-natural-mode/fixtures.mjs +0 -359
  89. package/benchmarks/compact-natural-mode/scorer.mjs +0 -331
  90. package/benchmarks/runtime-token-saver/fixtures.mjs +0 -836
  91. package/lib/cli/adaptive-context/catalog.mjs +0 -394
  92. package/lib/cli/adaptive-context/file-signals.mjs +0 -100
  93. package/lib/cli/adaptive-context/implications.mjs +0 -44
  94. package/lib/cli/adaptive-context.mjs +0 -151
  95. package/lib/cli/audits/typography-palette-anti-repeat/color-utils.mjs +0 -156
  96. package/lib/cli/audits/typography-palette-anti-repeat/file-scanner.mjs +0 -103
  97. package/lib/cli/audits/typography-palette-anti-repeat/typography-utils.mjs +0 -70
  98. package/lib/cli/backup.mjs +0 -210
  99. package/lib/cli/commands/context.mjs +0 -140
  100. package/lib/cli/commands/init/project-context.mjs +0 -60
  101. package/lib/cli/commands/init/runtime-environment.mjs +0 -59
  102. package/lib/cli/commands/init/setup-decisions.mjs +0 -83
  103. package/lib/cli/commands/init.mjs +0 -654
  104. package/lib/cli/commands/launch.mjs +0 -76
  105. package/lib/cli/commands/optimize.mjs +0 -284
  106. package/lib/cli/commands/rollback.mjs +0 -64
  107. package/lib/cli/commands/upgrade/token-optimization-state.mjs +0 -51
  108. package/lib/cli/commands/upgrade.mjs +0 -451
  109. package/lib/cli/compiler.mjs +0 -187
  110. package/lib/cli/constants.mjs +0 -136
  111. package/lib/cli/detector/constants.mjs +0 -135
  112. package/lib/cli/detector/design-evidence/collector.mjs +0 -256
  113. package/lib/cli/detector/design-evidence/constants.mjs +0 -39
  114. package/lib/cli/detector/design-evidence/file-traversal.mjs +0 -83
  115. package/lib/cli/detector/design-evidence/structured-attribute-evidence.mjs +0 -117
  116. package/lib/cli/detector/design-evidence/summary.mjs +0 -109
  117. package/lib/cli/detector/design-evidence/utility-helpers.mjs +0 -122
  118. package/lib/cli/detector/design-evidence.mjs +0 -25
  119. package/lib/cli/detector/stack-detection.mjs +0 -243
  120. package/lib/cli/detector/ui-signals.mjs +0 -150
  121. package/lib/cli/detector/workspace-scan.mjs +0 -177
  122. package/lib/cli/detector.mjs +0 -23
  123. package/lib/cli/init-detection-flow.mjs +0 -48
  124. package/lib/cli/init-options.mjs +0 -237
  125. package/lib/cli/init-selection.mjs +0 -29
  126. package/lib/cli/memory-continuity.mjs +0 -537
  127. package/lib/cli/preflight.mjs +0 -76
  128. package/lib/cli/project-scaffolder/constants.mjs +0 -69
  129. package/lib/cli/project-scaffolder/discovery.mjs +0 -272
  130. package/lib/cli/project-scaffolder/prompt-builders.mjs +0 -171
  131. package/lib/cli/project-scaffolder/storage.mjs +0 -144
  132. package/lib/cli/project-scaffolder/ui-scope-detection.mjs +0 -36
  133. package/lib/cli/project-scaffolder.mjs +0 -29
  134. package/lib/cli/rollback.mjs +0 -66
  135. package/lib/cli/token-optimization.mjs +0 -401
  136. package/lib/cli/utils/filesystem.mjs +0 -81
  137. package/lib/cli/utils/managed-surface.mjs +0 -280
  138. package/lib/cli/utils/prompting.mjs +0 -44
  139. package/lib/cli/utils.mjs +0 -479
  140. package/mcp.json +0 -134
  141. package/scripts/adaptive-context/fixtures.mjs +0 -183
  142. package/scripts/adaptive-context-benchmark.mjs +0 -9
  143. package/scripts/ascx-runtime-token-saver-benchmark.mjs +0 -9
  144. package/scripts/benchmark-evidence-bundle.mjs +0 -645
  145. package/scripts/benchmark-gate.mjs +0 -121
  146. package/scripts/benchmark-intelligence.mjs +0 -33
  147. package/scripts/benchmark-writer-judge-matrix.mjs +0 -379
  148. package/scripts/build-release-benchmark-bundle.mjs +0 -202
  149. package/scripts/bump-version.mjs +0 -103
  150. package/scripts/clean-local-artifacts.mjs +0 -78
  151. package/scripts/compact-natural-mode-benchmark.mjs +0 -9
  152. package/scripts/context-triggered-audit.mjs +0 -391
  153. package/scripts/detection-benchmark.mjs +0 -127
  154. package/scripts/docs-quality-drift-report.mjs +0 -358
  155. package/scripts/documentation-boundary-audit.mjs +0 -305
  156. package/scripts/explain-on-demand-audit.mjs +0 -427
  157. package/scripts/forbidden-content-check.mjs +0 -123
  158. package/scripts/frontend-usability-audit.mjs +0 -243
  159. package/scripts/generate-sbom.mjs +0 -61
  160. package/scripts/governance-weekly-report.mjs +0 -466
  161. package/scripts/llm-judge/checklist-loader.mjs +0 -45
  162. package/scripts/llm-judge/constants.mjs +0 -66
  163. package/scripts/llm-judge/diff-collection.mjs +0 -74
  164. package/scripts/llm-judge/prompting.mjs +0 -78
  165. package/scripts/llm-judge/providers.mjs +0 -111
  166. package/scripts/llm-judge/verdict.mjs +0 -134
  167. package/scripts/llm-judge.mjs +0 -200
  168. package/scripts/memory-continuity-benchmark.mjs +0 -322
  169. package/scripts/quality-trend-report.mjs +0 -289
  170. package/scripts/release-gate/audit-checks.mjs +0 -441
  171. package/scripts/release-gate/constants.mjs +0 -53
  172. package/scripts/release-gate/runtime.mjs +0 -63
  173. package/scripts/release-gate/static-checks.mjs +0 -182
  174. package/scripts/release-gate.mjs +0 -42
  175. package/scripts/rules-guardian-audit.mjs +0 -580
  176. package/scripts/single-source-lazy-loading-audit.mjs +0 -449
  177. package/scripts/sync-thin-adapters.mjs +0 -72
  178. package/scripts/token-optimization-benchmark.mjs +0 -252
  179. package/scripts/ui-design-judge/constants.mjs +0 -13
  180. package/scripts/ui-design-judge/design-execution-summary.mjs +0 -81
  181. package/scripts/ui-design-judge/git-input.mjs +0 -134
  182. package/scripts/ui-design-judge/prompting.mjs +0 -52
  183. package/scripts/ui-design-judge/providers.mjs +0 -102
  184. package/scripts/ui-design-judge/reporting.mjs +0 -183
  185. package/scripts/ui-design-judge/rubric-calibration.mjs +0 -214
  186. package/scripts/ui-design-judge/rubric-goldset.json +0 -188
  187. package/scripts/ui-design-judge.mjs +0 -319
  188. package/scripts/ui-rubric-calibration.mjs +0 -35
  189. package/scripts/validate/audits/cache-layer-contract.mjs +0 -230
  190. package/scripts/validate/audits/caching-scope-hygiene.mjs +0 -235
  191. package/scripts/validate/audits/file-size.mjs +0 -158
  192. package/scripts/validate/audits/reflection-citations.mjs +0 -130
  193. package/scripts/validate/audits/release-bundle.mjs +0 -135
  194. package/scripts/validate/audits/rule-id-uniqueness.mjs +0 -278
  195. package/scripts/validate/config.mjs +0 -501
  196. package/scripts/validate/coverage-checks.mjs +0 -446
  197. package/scripts/validate/file-structure.mjs +0 -158
  198. package/scripts/validate/markdown-content.mjs +0 -109
  199. package/scripts/validate/project-metadata.mjs +0 -166
  200. package/scripts/validate/utils.mjs +0 -52
  201. package/scripts/validate.mjs +0 -267
@@ -1,394 +0,0 @@
1
- export const RULE_FAMILY_CATALOG = [
2
- {
3
- label: 'SEC',
4
- rulePath: '.agent-context/rules/security.md',
5
- priority: 10,
6
- triggers: [
7
- 'auth',
8
- 'authorization',
9
- 'login',
10
- 'password',
11
- 'permission',
12
- 'role',
13
- 'secret',
14
- 'secrets',
15
- 'session',
16
- 'turnstile',
17
- 'jwt',
18
- 'csrf',
19
- 'xss',
20
- 'sql injection',
21
- 'request validation',
22
- 'safe request',
23
- 'access',
24
- 'akses',
25
- 'kebuka',
26
- 'expose',
27
- 'exposed',
28
- 'exposing',
29
- 'credential',
30
- 'credentials',
31
- 'access token',
32
- 'api token',
33
- 'auth token',
34
- 'bearer token',
35
- 'tenant',
36
- 'tenant sebelah',
37
- 'user lain',
38
- ],
39
- },
40
- {
41
- label: 'API',
42
- rulePath: '.agent-context/rules/api-docs.md',
43
- priority: 20,
44
- triggers: [
45
- 'api',
46
- 'endpoint',
47
- 'route',
48
- 'response',
49
- 'http',
50
- 'webhook',
51
- 'contract',
52
- 'pagination',
53
- 'cli',
54
- 'command',
55
- 'idempotent',
56
- 'idempotency',
57
- 'documented',
58
- 'diagram',
59
- 'mermaid',
60
- ],
61
- },
62
- {
63
- label: 'ERR',
64
- rulePath: '.agent-context/rules/error-handling.md',
65
- priority: 30,
66
- triggers: [
67
- 'error',
68
- 'errors',
69
- 'exception',
70
- 'fail',
71
- 'failed',
72
- 'failing',
73
- 'bug',
74
- 'crash',
75
- 'stack trace',
76
- 'null',
77
- 'undefined',
78
- 'rollback',
79
- 'debug',
80
- 'gagal',
81
- 'fix',
82
- 'broke',
83
- 'broken',
84
- 'stops',
85
- 'stopped',
86
- 'bermasalah',
87
- 'ga jalan',
88
- 'nggak jalan',
89
- 'tidak jalan',
90
- ],
91
- },
92
- {
93
- label: 'TEST',
94
- rulePath: '.agent-context/rules/testing.md',
95
- priority: 40,
96
- triggers: [
97
- 'test',
98
- 'tests',
99
- 'testing',
100
- 'spec',
101
- 'assert',
102
- 'assertion',
103
- 'coverage',
104
- 'validate',
105
- 'validation',
106
- 'smoke',
107
- 'unit',
108
- 'integration',
109
- 'benchmark',
110
- 'fixture',
111
- 'fixtures',
112
- 'regression',
113
- 'corpus',
114
- ],
115
- },
116
- {
117
- label: 'ARCH',
118
- rulePath: '.agent-context/rules/architecture.md',
119
- priority: 50,
120
- triggers: [
121
- 'architecture',
122
- 'boundary',
123
- 'layer',
124
- 'module',
125
- 'structure',
126
- 'refactor',
127
- 'clean up',
128
- 'cleanup',
129
- 'over-engineer',
130
- 'over engineering',
131
- 'abstraction',
132
- 'helper',
133
- 'natural implementation',
134
- 'adaptive context',
135
- 'classifier',
136
- 'resolver',
137
- 'routing',
138
- 'runtime',
139
- 'duplicate',
140
- 'duplicate code',
141
- 'middleware',
142
- 'rapihin',
143
- 'rapikan',
144
- 'simple',
145
- 'simplicity',
146
- 'modularity',
147
- 'elegance',
148
- ],
149
- },
150
- {
151
- label: 'FE',
152
- rulePath: '.agent-context/rules/frontend-architecture.md',
153
- priority: 70,
154
- triggers: [
155
- 'ui',
156
- 'ux',
157
- 'frontend',
158
- 'component',
159
- 'screen',
160
- 'layout',
161
- 'responsive',
162
- 'tailwind',
163
- 'redesign',
164
- 'redesain',
165
- 'animation',
166
- 'motion',
167
- 'page',
168
- 'mobile',
169
- 'overlap',
170
- 'overlaps',
171
- 'flicker',
172
- 'flickers',
173
- 'text overlaps',
174
- 'button',
175
- 'layar',
176
- 'layar kecil',
177
- 'kepotong',
178
- 'terpotong',
179
- ],
180
- },
181
- {
182
- label: 'DATA',
183
- rulePath: '.agent-context/rules/database-design.md',
184
- priority: 80,
185
- triggers: [
186
- 'database',
187
- 'schema',
188
- 'sql',
189
- 'query',
190
- 'table',
191
- 'prisma',
192
- 'model',
193
- 'persistence',
194
- 'index',
195
- 'n+1',
196
- ],
197
- },
198
- {
199
- label: 'MIG',
200
- rulePath: '.agent-context/rules/migrations.md',
201
- priority: 90,
202
- triggers: [
203
- 'migration',
204
- 'migrate',
205
- 'rollback',
206
- 'backfill',
207
- 'schema change',
208
- 'expand contract',
209
- ],
210
- },
211
- {
212
- label: 'PERF',
213
- rulePath: '.agent-context/rules/performance.md',
214
- priority: 100,
215
- triggers: [
216
- 'performance',
217
- 'slow',
218
- 'latency',
219
- 'memory',
220
- 'n+1',
221
- 'cache',
222
- 'optimization',
223
- 'throughput',
224
- 'lemot',
225
- 'lambat',
226
- 'bottleneck',
227
- ],
228
- },
229
- {
230
- label: 'DOCK',
231
- rulePath: '.agent-context/rules/docker-runtime.md',
232
- priority: 110,
233
- triggers: [
234
- 'docker',
235
- 'compose',
236
- 'container',
237
- 'dockerfile',
238
- 'image',
239
- ],
240
- },
241
- {
242
- label: 'OBS',
243
- rulePath: '.agent-context/rules/observability.md',
244
- priority: 120,
245
- triggers: [
246
- 'log',
247
- 'logging',
248
- 'metric',
249
- 'trace',
250
- 'tracing',
251
- 'alert',
252
- 'observability',
253
- 'monitoring',
254
- 'slo',
255
- 'logs',
256
- 'silent',
257
- 'silently',
258
- ],
259
- },
260
- {
261
- label: 'RES',
262
- rulePath: '.agent-context/rules/resilience.md',
263
- priority: 130,
264
- triggers: [
265
- 'retry',
266
- 'timeout',
267
- 'fallback',
268
- 'circuit',
269
- 'degraded',
270
- 'resilience',
271
- 'unavailable',
272
- 'recovery',
273
- 'offline',
274
- ],
275
- },
276
- {
277
- label: 'CFG',
278
- rulePath: '.agent-context/rules/config-and-flags.md',
279
- priority: 140,
280
- triggers: [
281
- 'env',
282
- 'config',
283
- 'configuration',
284
- 'flag',
285
- 'feature flag',
286
- 'setting',
287
- 'settings',
288
- 'secret',
289
- 'key',
290
- 'env var',
291
- ],
292
- },
293
- {
294
- label: 'JOB',
295
- rulePath: '.agent-context/rules/background-jobs.md',
296
- priority: 150,
297
- triggers: [
298
- 'queue',
299
- 'worker',
300
- 'cron',
301
- 'job',
302
- 'background',
303
- 'scheduler',
304
- ],
305
- },
306
- {
307
- label: 'EVT',
308
- rulePath: '.agent-context/rules/event-driven.md',
309
- priority: 160,
310
- triggers: [
311
- 'event',
312
- 'events',
313
- 'message',
314
- 'pubsub',
315
- 'kafka',
316
- 'broker',
317
- 'outbox',
318
- 'subscriber',
319
- 'producer',
320
- ],
321
- },
322
- {
323
- label: 'SVC',
324
- rulePath: '.agent-context/rules/microservices.md',
325
- priority: 170,
326
- triggers: [
327
- 'microservice',
328
- 'microservices',
329
- 'distributed',
330
- 'service split',
331
- 'multi-service',
332
- ],
333
- },
334
- {
335
- label: 'RT',
336
- rulePath: '.agent-context/rules/realtime.md',
337
- priority: 180,
338
- triggers: [
339
- 'realtime',
340
- 'real-time',
341
- 'websocket',
342
- 'sse',
343
- 'socket',
344
- 'stream',
345
- 'live update',
346
- ],
347
- },
348
- {
349
- label: 'VER',
350
- rulePath: '.agent-context/rules/api-versioning.md',
351
- priority: 190,
352
- triggers: [
353
- 'version',
354
- 'versioned',
355
- 'versioning',
356
- 'deprecate',
357
- 'deprecation',
358
- 'backward compatible',
359
- 'breaking change',
360
- ],
361
- },
362
- ];
363
-
364
- export const PROMPT_CATALOG = [
365
- {
366
- promptPath: '.agent-context/prompts/review-code.md',
367
- triggers: ['review', 'audit', 'check', 'analyze', 'analisa', 'cek'],
368
- },
369
- {
370
- promptPath: '.agent-context/prompts/refactor.md',
371
- triggers: ['refactor', 'improve', 'fix', 'clean up', 'cleanup', 'rapikan', 'perbaiki'],
372
- },
373
- {
374
- promptPath: '.agent-context/prompts/init-project.md',
375
- triggers: ['create', 'build', 'new project', 'scaffold', 'fresh project', 'bikin project'],
376
- },
377
- {
378
- promptPath: '.agent-context/prompts/bootstrap-design.md',
379
- labels: ['FE'],
380
- triggers: ['ui', 'ux', 'frontend', 'layout', 'screen', 'redesign', 'redesain', 'ulang dari 0', 'research ulang'],
381
- },
382
- ];
383
-
384
- export const DOCS_BY_LABEL = {
385
- ARCH: ['docs/architecture-decision-record.md', 'docs/flow-overview.md'],
386
- API: ['docs/api-contract.md'],
387
- DATA: ['docs/database-schema.md'],
388
- FE: ['docs/DESIGN.md'],
389
- TEST: ['docs/flow-overview.md'],
390
- };
391
-
392
- export const STATE_BY_LABEL = {
393
- ARCH: ['.agent-context/state/architecture-map.md'],
394
- };
@@ -1,100 +0,0 @@
1
- export const CONTEXT_FILE_CATALOG = [
2
- {
3
- label: 'SEC',
4
- patterns: [
5
- /(^|\/)(auth|login|session|permission|permissions|role|roles|acl|policy|guard|middleware)(\.|\/|-|$)/iu,
6
- /(^|\/)\.env(\.|$)/iu,
7
- ],
8
- },
9
- {
10
- label: 'API',
11
- patterns: [
12
- /(^|\/)(api|apis|route|routes|controller|controllers|contract|openapi)(\.|\/|-|$)/iu,
13
- /(^|\/)(commands?|cli)(\.|\/|-|$)/iu,
14
- ],
15
- },
16
- {
17
- label: 'ERR',
18
- patterns: [
19
- /(^|\/)(errors?|exceptions?|failures?)(\.|\/|-|$)/iu,
20
- ],
21
- },
22
- {
23
- label: 'TEST',
24
- patterns: [
25
- /(^|\/)(tests?|__tests__)(\/|$)/iu,
26
- /\.(test|spec)\.[cm]?[jt]sx?$/iu,
27
- ],
28
- },
29
- {
30
- label: 'FE',
31
- patterns: [
32
- /\.(tsx|jsx|vue|svelte|css|scss|sass)$/iu,
33
- /(^|\/)(app|pages|screens|components?|layouts?|styles?)(\/|$)/iu,
34
- /(^|\/)page\.[cm]?[jt]sx?$/iu,
35
- ],
36
- },
37
- {
38
- label: 'DATA',
39
- patterns: [
40
- /\.(sql|prisma)$/iu,
41
- /(^|\/)(schema|schemas|models?|repositories?|db|database)(\.|\/|-|$)/iu,
42
- ],
43
- },
44
- {
45
- label: 'MIG',
46
- patterns: [
47
- /(^|\/)(migrations?|migration)(\/|\.|-|$)/iu,
48
- ],
49
- },
50
- {
51
- label: 'PERF',
52
- patterns: [
53
- /(^|\/)(performance|perf|benchmark|benchmarks)(\.|\/|-|$)/iu,
54
- ],
55
- },
56
- {
57
- label: 'DOCK',
58
- patterns: [
59
- /(^|\/)(dockerfile|compose\.ya?ml|docker-compose\.ya?ml)$/iu,
60
- /(^|\/)\.dockerignore$/iu,
61
- ],
62
- },
63
- {
64
- label: 'OBS',
65
- patterns: [
66
- /(^|\/)(logging|logger|metrics?|tracing|telemetry|observability)(\.|\/|-|$)/iu,
67
- ],
68
- },
69
- {
70
- label: 'RES',
71
- patterns: [
72
- /(^|\/)(retry|retries|timeout|fallback|resilience|recovery)(\.|\/|-|$)/iu,
73
- ],
74
- },
75
- {
76
- label: 'CFG',
77
- patterns: [
78
- /(^|\/)(config|configs|settings|flags?)(\.|\/|-|$)/iu,
79
- /(^|\/)\.env(\.|$)/iu,
80
- ],
81
- },
82
- {
83
- label: 'JOB',
84
- patterns: [
85
- /(^|\/)(jobs?|workers?|queues?|cron|scheduler)(\.|\/|-|$)/iu,
86
- ],
87
- },
88
- {
89
- label: 'EVT',
90
- patterns: [
91
- /(^|\/)(events?|messages?|pubsub|outbox|subscribers?|producers?)(\.|\/|-|$)/iu,
92
- ],
93
- },
94
- {
95
- label: 'RT',
96
- patterns: [
97
- /(^|\/)(websocket|sse|realtime|stream|socket)(\.|\/|-|$)/iu,
98
- ],
99
- },
100
- ];
@@ -1,44 +0,0 @@
1
- export const IMPLICATION_CATALOG = [
2
- {
3
- label: 'ERR',
4
- reason: 'migration failure language',
5
- requiresAnyLabel: ['MIG'],
6
- triggers: ['broke', 'broken', 'fail', 'failed', 'failing', 'gagal', 'stuck', 'stops', 'stopped', 'rollback'],
7
- },
8
- {
9
- label: 'PERF',
10
- reason: 'data access performance language',
11
- requiresAnyLabel: ['DATA'],
12
- triggers: ['slow', 'lemot', 'lambat', 'n+1', 'bottleneck', 'performance'],
13
- },
14
- {
15
- label: 'SEC',
16
- reason: 'configuration exposure language',
17
- requiresAnyLabel: ['CFG'],
18
- triggers: ['secret', 'secrets', 'key', 'token', 'credential', 'credentials', 'expose', 'exposed', 'exposing', 'leak', 'leaking'],
19
- },
20
- {
21
- label: 'ARCH',
22
- reason: 'security middleware structure language',
23
- requiresAnyLabel: ['SEC'],
24
- triggers: ['duplicate', 'duplicate code', 'middleware', 'refactor', 'clean up', 'cleanup', 'rapihin', 'rapikan'],
25
- },
26
- {
27
- label: 'OBS',
28
- reason: 'silent worker needs operator evidence',
29
- requiresAnyLabel: ['JOB'],
30
- triggers: ['log', 'logs', 'silent', 'silently', 'trace', 'monitoring'],
31
- },
32
- {
33
- label: 'ERR',
34
- reason: 'silent worker failure language',
35
- requiresAnyLabel: ['JOB'],
36
- triggers: ['stops', 'stopped', 'silent', 'silently', 'fail', 'failed', 'failing'],
37
- },
38
- {
39
- label: 'TEST',
40
- reason: 'runtime hardening needs regression evidence',
41
- requiresAnyLabel: ['ARCH'],
42
- triggers: ['stable', 'stability', 'miss', 'case', 'cases', 'benchmark', 'fixture', 'fixtures', 'regression'],
43
- },
44
- ];
@@ -1,151 +0,0 @@
1
- import { DOCS_BY_LABEL, PROMPT_CATALOG, RULE_FAMILY_CATALOG, STATE_BY_LABEL } from './adaptive-context/catalog.mjs';
2
- import { CONTEXT_FILE_CATALOG } from './adaptive-context/file-signals.mjs';
3
- import { IMPLICATION_CATALOG } from './adaptive-context/implications.mjs';
4
-
5
- const CONTEXT_BUDGET_POLICY = Object.freeze({
6
- maxRecommendedRuleCount: 5,
7
- maxFallbackRuleCount: 7,
8
- });
9
-
10
- export function getRuleFamilyCatalog() {
11
- return RULE_FAMILY_CATALOG.map((ruleFamily) => ({ ...ruleFamily }));
12
- }
13
-
14
- export function normalizeRequestText(requestText) {
15
- return String(requestText || '').trim().toLowerCase().replace(/\s+/g, ' ');
16
- }
17
-
18
- function triggerMatchesRequest(text, trigger) {
19
- if (!text || !trigger) return false;
20
- return /^[a-z0-9 ]+$/.test(trigger)
21
- ? new RegExp(`(^|[^a-z0-9])${trigger.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}([^a-z0-9]|$)`).test(text)
22
- : text.includes(trigger);
23
- }
24
-
25
- const uniqueSorted = (arr) => Array.from(new Set(arr)).sort((a, b) => a.localeCompare(b));
26
-
27
- function resolveUncertainty(labels, evidence, text) {
28
- if (!text || !labels.length) return 'high';
29
- const hasSparseEvidence = evidence.some(e => (e.matchedTriggers.length + e.matchedFiles.length + e.matchedImplications.length) === 1);
30
- return (labels.length >= 6 || hasSparseEvidence) ? 'medium' : 'low';
31
- }
32
-
33
- function buildContextBudget(labels, evidence) {
34
- const selectedRuleCount = labels.length;
35
- const evidenceSignalCount = evidence.reduce((sum, e) => sum + e.matchedTriggers.length + e.matchedFiles.length + e.matchedImplications.length, 0);
36
- const overRecommendedRuleCount = Math.max(0, selectedRuleCount - CONTEXT_BUDGET_POLICY.maxRecommendedRuleCount);
37
- const overFallbackRuleCount = Math.max(0, selectedRuleCount - CONTEXT_BUDGET_POLICY.maxFallbackRuleCount);
38
-
39
- let status = 'within-budget';
40
- if (overFallbackRuleCount > 0) status = 'fallback-required';
41
- else if (overRecommendedRuleCount > 0) status = 'wide-context';
42
-
43
- return {
44
- status,
45
- selectedRuleCount,
46
- evidenceSignalCount,
47
- maxRecommendedRuleCount: CONTEXT_BUDGET_POLICY.maxRecommendedRuleCount,
48
- maxFallbackRuleCount: CONTEXT_BUDGET_POLICY.maxFallbackRuleCount,
49
- overRecommendedRuleCount,
50
- overFallbackRuleCount,
51
- };
52
- }
53
-
54
- export function buildSelectedContextManifest({ contextFiles = [], requestId = 'adhoc-request', requestText = '' } = {}) {
55
- const normText = normalizeRequestText(requestText);
56
- const normFiles = (Array.isArray(contextFiles) ? contextFiles : [])
57
- .map(f => String(f || '').trim().replace(/\\/g, '/').replace(/\/+/g, '/').toLowerCase())
58
- .filter(Boolean);
59
-
60
- const matchedEntries = RULE_FAMILY_CATALOG.map(rule => {
61
- const matchedTriggers = rule.triggers.filter(t => triggerMatchesRequest(normText, t));
62
- const filePatterns = CONTEXT_FILE_CATALOG.find(c => c.label === rule.label)?.patterns || [];
63
- const matchedFiles = normFiles.filter(f => filePatterns.some(p => p.test(f)));
64
- return { ...rule, matchedTriggers, matchedFiles, matchedImplications: [] };
65
- });
66
-
67
- const matchedLabelSet = new Set(matchedEntries.filter(e => e.matchedTriggers.length || e.matchedFiles.length).map(e => e.label));
68
-
69
- for (const imp of IMPLICATION_CATALOG) {
70
- if (imp.requiresAnyLabel.some(l => matchedLabelSet.has(l))) {
71
- const triggers = imp.triggers.filter(t => triggerMatchesRequest(normText, t));
72
- if (triggers.length) {
73
- const target = matchedEntries.find(e => e.label === imp.label);
74
- if (target) {
75
- const detail = `${imp.reason}: ${triggers.join(', ')}`;
76
- if (!target.matchedImplications.includes(detail)) target.matchedImplications.push(detail);
77
- matchedLabelSet.add(imp.label);
78
- }
79
- }
80
- }
81
- }
82
-
83
- const matchedRuleEntries = matchedEntries
84
- .filter(e => e.matchedTriggers.length || e.matchedFiles.length || e.matchedImplications.length)
85
- .sort((a, b) => a.priority - b.priority || a.label.localeCompare(b.label));
86
-
87
- const labels = matchedRuleEntries.map(e => e.label);
88
- const evidence = matchedRuleEntries.map(({ label, matchedTriggers, matchedFiles, matchedImplications }) => ({ label, matchedTriggers, matchedFiles, matchedImplications }));
89
- const uncertainty = resolveUncertainty(labels, evidence, normText);
90
- const budget = buildContextBudget(labels, evidence);
91
-
92
- const selectedRuleSet = new Set(matchedRuleEntries.map(e => e.rulePath));
93
-
94
- const selectedPrompts = PROMPT_CATALOG
95
- .filter(p => (Array.isArray(p.labels) && p.labels.some(l => labels.includes(l))) || p.triggers.some(t => triggerMatchesRequest(normText, t)))
96
- .map(p => p.promptPath);
97
-
98
- return {
99
- schemaVersion: 'adaptive-context-manifest-v1',
100
- requestId,
101
- contextFiles: normFiles,
102
- labels,
103
- selectedRules: matchedRuleEntries.map(e => e.rulePath),
104
- selectedPrompts: uniqueSorted(selectedPrompts),
105
- selectedDocs: uniqueSorted(['docs/doc-index.md', ...labels.flatMap(l => DOCS_BY_LABEL[l] || [])]),
106
- selectedState: uniqueSorted(['.agent-context/state/onboarding-report.json', ...labels.flatMap(l => STATE_BY_LABEL[l] || [])]),
107
- skippedRules: RULE_FAMILY_CATALOG.map(r => r.rulePath).filter(r => !selectedRuleSet.has(r)).sort((a, b) => a.localeCompare(b)),
108
- uncertainty,
109
- budget,
110
- fallbackRequired: uncertainty === 'high' || budget.status === 'fallback-required',
111
- evidence,
112
- };
113
- }
114
-
115
- export function evaluateAdaptiveContextFixtures(fixtures) {
116
- const results = fixtures.map(fixture => {
117
- const manifest = buildSelectedContextManifest({ requestId: fixture.id, requestText: fixture.requestText });
118
- const reqSet = new Set(fixture.requiredLabels);
119
- const allowSet = new Set(fixture.allowedLabels || fixture.requiredLabels);
120
- return {
121
- id: fixture.id,
122
- passed: fixture.requiredLabels.every(l => manifest.labels.includes(l)),
123
- missedRequiredLabels: fixture.requiredLabels.filter(l => !manifest.labels.includes(l)),
124
- extraLabels: manifest.labels.filter(l => !allowSet.has(l)),
125
- manifest,
126
- };
127
- });
128
-
129
- const failed = results.filter(r => !r.passed);
130
- const selectedRuleCounts = results.map(r => r.manifest.budget.selectedRuleCount);
131
-
132
- return {
133
- reportName: 'adaptive-context-benchmark',
134
- generatedAt: new Date().toISOString(),
135
- fixtureCount: results.length,
136
- passed: failed.length === 0,
137
- passedCount: results.length - failed.length,
138
- failedCount: failed.length,
139
- missedRequiredLabelCount: results.reduce((sum, r) => sum + r.missedRequiredLabels.length, 0),
140
- extraLabelCount: results.reduce((sum, r) => sum + r.extraLabels.length, 0),
141
- budgetSummary: {
142
- maxSelectedRuleCount: Math.max(0, ...selectedRuleCounts),
143
- averageSelectedRuleCount: results.length ? Number((selectedRuleCounts.reduce((a, b) => a + b, 0) / results.length).toFixed(2)) : 0,
144
- overRecommendedFixtureCount: results.filter(r => r.manifest.budget.status !== 'within-budget').length,
145
- fallbackFixtureCount: results.filter(r => r.manifest.fallbackRequired).length,
146
- maxRecommendedRuleCount: CONTEXT_BUDGET_POLICY.maxRecommendedRuleCount,
147
- maxFallbackRuleCount: CONTEXT_BUDGET_POLICY.maxFallbackRuleCount,
148
- },
149
- results,
150
- };
151
- }