@ryuenn3123/agentic-senior-core 4.0.3 → 4.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 (63) hide show
  1. package/.agent-context/prompts/compact-natural-mode.md +100 -0
  2. package/.agent-context/prompts/init-project.md +1 -0
  3. package/.agent-context/prompts/refactor.md +1 -0
  4. package/.agent-context/review-checklists/pr-checklist.md +1 -0
  5. package/.agent-context/rules/api-docs.md +14 -0
  6. package/.agent-context/rules/api-versioning.md +93 -0
  7. package/.agent-context/rules/architecture.md +10 -0
  8. package/.agent-context/rules/background-jobs.md +93 -0
  9. package/.agent-context/rules/config-and-flags.md +79 -0
  10. package/.agent-context/rules/database-design.md +32 -0
  11. package/.agent-context/rules/frontend-architecture.md +35 -0
  12. package/.agent-context/rules/migrations.md +84 -0
  13. package/.agent-context/rules/naming-conv.md +6 -3
  14. package/.agent-context/rules/observability.md +69 -0
  15. package/.agent-context/rules/resilience.md +78 -0
  16. package/.agent-context/rules/security.md +28 -0
  17. package/AGENTS.md +13 -15
  18. package/README.md +102 -91
  19. package/benchmarks/README.md +40 -0
  20. package/benchmarks/compact-natural-mode/fixtures.mjs +359 -0
  21. package/benchmarks/compact-natural-mode/scorer.mjs +331 -0
  22. package/benchmarks/runtime-token-saver/fixtures.mjs +613 -0
  23. package/bin/agentic-senior-core.js +6 -0
  24. package/bin/ascx.js +23 -0
  25. package/lib/cli/adaptive-context/catalog.mjs +428 -0
  26. package/lib/cli/adaptive-context/file-signals.mjs +100 -0
  27. package/lib/cli/adaptive-context/implications.mjs +44 -0
  28. package/lib/cli/adaptive-context.mjs +365 -0
  29. package/lib/cli/ascx/adapters/git-diff.mjs +223 -0
  30. package/lib/cli/ascx/adapters/git-status.mjs +145 -0
  31. package/lib/cli/ascx/adapters/npm-test.mjs +120 -0
  32. package/lib/cli/ascx/fixture-evaluator.mjs +180 -0
  33. package/lib/cli/ascx/formatter.mjs +46 -0
  34. package/lib/cli/ascx/lexer.mjs +113 -0
  35. package/lib/cli/ascx/runtime.mjs +188 -0
  36. package/lib/cli/ascx/tee-writer.mjs +38 -0
  37. package/lib/cli/ascx/token-estimate.mjs +15 -0
  38. package/lib/cli/commands/context.mjs +140 -0
  39. package/lib/cli/commands/init.mjs +2 -1
  40. package/lib/cli/commands/optimize.mjs +143 -2
  41. package/lib/cli/commands/upgrade.mjs +2 -0
  42. package/lib/cli/compiler.mjs +9 -0
  43. package/lib/cli/token-optimization.mjs +161 -6
  44. package/lib/cli/utils.mjs +15 -1
  45. package/package.json +11 -5
  46. package/scripts/adaptive-context/fixtures.mjs +188 -0
  47. package/scripts/adaptive-context-benchmark.mjs +9 -0
  48. package/scripts/ascx-runtime-token-saver-benchmark.mjs +9 -0
  49. package/scripts/audit-cache-layer-contract.mjs +5 -0
  50. package/scripts/audit-caching-scope-hygiene.mjs +5 -0
  51. package/scripts/clean-local-artifacts.mjs +0 -1
  52. package/scripts/compact-natural-mode-benchmark.mjs +9 -0
  53. package/scripts/frontend-usability-audit.mjs +5 -8
  54. package/scripts/release-gate/static-checks.mjs +7 -7
  55. package/scripts/validate/config.mjs +1 -2
  56. package/scripts/validate/coverage-checks.mjs +1 -42
  57. package/scripts/validate.mjs +11 -7
  58. package/scripts/migrate-rule-format/id-prefix-table.mjs +0 -37
  59. package/scripts/migrate-rule-format/parse-legacy.mjs +0 -180
  60. package/scripts/migrate-rule-format/render-new.mjs +0 -169
  61. package/scripts/migrate-rule-format/roundtrip-validate.mjs +0 -89
  62. package/scripts/migrate-rule-format.mjs +0 -192
  63. package/scripts/v3-purge-audit.mjs +0 -236
@@ -0,0 +1,428 @@
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
+ ],
59
+ },
60
+ {
61
+ label: 'ERR',
62
+ rulePath: '.agent-context/rules/error-handling.md',
63
+ priority: 30,
64
+ triggers: [
65
+ 'error',
66
+ 'errors',
67
+ 'exception',
68
+ 'fail',
69
+ 'failed',
70
+ 'failing',
71
+ 'bug',
72
+ 'crash',
73
+ 'stack trace',
74
+ 'null',
75
+ 'undefined',
76
+ 'rollback',
77
+ 'debug',
78
+ 'gagal',
79
+ 'fix',
80
+ 'broke',
81
+ 'broken',
82
+ 'stops',
83
+ 'stopped',
84
+ 'bermasalah',
85
+ 'ga jalan',
86
+ 'nggak jalan',
87
+ 'tidak jalan',
88
+ ],
89
+ },
90
+ {
91
+ label: 'TEST',
92
+ rulePath: '.agent-context/rules/testing.md',
93
+ priority: 40,
94
+ triggers: [
95
+ 'test',
96
+ 'tests',
97
+ 'testing',
98
+ 'spec',
99
+ 'assert',
100
+ 'assertion',
101
+ 'coverage',
102
+ 'validate',
103
+ 'validation',
104
+ 'smoke',
105
+ 'unit',
106
+ 'integration',
107
+ 'benchmark',
108
+ 'fixture',
109
+ 'fixtures',
110
+ 'regression',
111
+ 'corpus',
112
+ ],
113
+ },
114
+ {
115
+ label: 'ARCH',
116
+ rulePath: '.agent-context/rules/architecture.md',
117
+ priority: 50,
118
+ triggers: [
119
+ 'architecture',
120
+ 'boundary',
121
+ 'layer',
122
+ 'module',
123
+ 'structure',
124
+ 'refactor',
125
+ 'clean up',
126
+ 'cleanup',
127
+ 'over-engineer',
128
+ 'over engineering',
129
+ 'abstraction',
130
+ 'helper',
131
+ 'natural implementation',
132
+ 'adaptive context',
133
+ 'classifier',
134
+ 'resolver',
135
+ 'routing',
136
+ 'runtime',
137
+ 'duplicate',
138
+ 'duplicate code',
139
+ 'middleware',
140
+ 'rapihin',
141
+ 'rapikan',
142
+ ],
143
+ },
144
+ {
145
+ label: 'NAME',
146
+ rulePath: '.agent-context/rules/naming-conv.md',
147
+ priority: 60,
148
+ triggers: [
149
+ 'naming',
150
+ 'name',
151
+ 'variable',
152
+ 'function name',
153
+ 'comment',
154
+ 'comments',
155
+ 'readable',
156
+ 'humanizer',
157
+ 'natural code',
158
+ 'generic name',
159
+ 'namingnya',
160
+ 'dibaca',
161
+ 'variabel',
162
+ ],
163
+ },
164
+ {
165
+ label: 'FE',
166
+ rulePath: '.agent-context/rules/frontend-architecture.md',
167
+ priority: 70,
168
+ triggers: [
169
+ 'ui',
170
+ 'ux',
171
+ 'frontend',
172
+ 'component',
173
+ 'screen',
174
+ 'layout',
175
+ 'responsive',
176
+ 'tailwind',
177
+ 'redesign',
178
+ 'redesain',
179
+ 'animation',
180
+ 'motion',
181
+ 'page',
182
+ 'mobile',
183
+ 'overlap',
184
+ 'overlaps',
185
+ 'flicker',
186
+ 'flickers',
187
+ 'text overlaps',
188
+ 'button',
189
+ 'layar',
190
+ 'layar kecil',
191
+ 'kepotong',
192
+ 'terpotong',
193
+ ],
194
+ },
195
+ {
196
+ label: 'DATA',
197
+ rulePath: '.agent-context/rules/database-design.md',
198
+ priority: 80,
199
+ triggers: [
200
+ 'database',
201
+ 'schema',
202
+ 'sql',
203
+ 'query',
204
+ 'table',
205
+ 'prisma',
206
+ 'model',
207
+ 'persistence',
208
+ 'index',
209
+ 'n+1',
210
+ ],
211
+ },
212
+ {
213
+ label: 'MIG',
214
+ rulePath: '.agent-context/rules/migrations.md',
215
+ priority: 90,
216
+ triggers: [
217
+ 'migration',
218
+ 'migrate',
219
+ 'rollback',
220
+ 'backfill',
221
+ 'schema change',
222
+ 'expand contract',
223
+ ],
224
+ },
225
+ {
226
+ label: 'PERF',
227
+ rulePath: '.agent-context/rules/performance.md',
228
+ priority: 100,
229
+ triggers: [
230
+ 'performance',
231
+ 'slow',
232
+ 'latency',
233
+ 'memory',
234
+ 'n+1',
235
+ 'cache',
236
+ 'optimization',
237
+ 'throughput',
238
+ 'lemot',
239
+ 'lambat',
240
+ 'bottleneck',
241
+ ],
242
+ },
243
+ {
244
+ label: 'DOCK',
245
+ rulePath: '.agent-context/rules/docker-runtime.md',
246
+ priority: 110,
247
+ triggers: [
248
+ 'docker',
249
+ 'compose',
250
+ 'container',
251
+ 'dockerfile',
252
+ 'image',
253
+ ],
254
+ },
255
+ {
256
+ label: 'OBS',
257
+ rulePath: '.agent-context/rules/observability.md',
258
+ priority: 120,
259
+ triggers: [
260
+ 'log',
261
+ 'logging',
262
+ 'metric',
263
+ 'trace',
264
+ 'tracing',
265
+ 'alert',
266
+ 'observability',
267
+ 'monitoring',
268
+ 'slo',
269
+ 'logs',
270
+ 'silent',
271
+ 'silently',
272
+ ],
273
+ },
274
+ {
275
+ label: 'RES',
276
+ rulePath: '.agent-context/rules/resilience.md',
277
+ priority: 130,
278
+ triggers: [
279
+ 'retry',
280
+ 'timeout',
281
+ 'fallback',
282
+ 'circuit',
283
+ 'degraded',
284
+ 'resilience',
285
+ 'unavailable',
286
+ 'recovery',
287
+ 'offline',
288
+ ],
289
+ },
290
+ {
291
+ label: 'CFG',
292
+ rulePath: '.agent-context/rules/config-and-flags.md',
293
+ priority: 140,
294
+ triggers: [
295
+ 'env',
296
+ 'config',
297
+ 'configuration',
298
+ 'flag',
299
+ 'feature flag',
300
+ 'setting',
301
+ 'settings',
302
+ 'secret',
303
+ 'key',
304
+ 'env var',
305
+ ],
306
+ },
307
+ {
308
+ label: 'JOB',
309
+ rulePath: '.agent-context/rules/background-jobs.md',
310
+ priority: 150,
311
+ triggers: [
312
+ 'queue',
313
+ 'worker',
314
+ 'cron',
315
+ 'job',
316
+ 'background',
317
+ 'scheduler',
318
+ ],
319
+ },
320
+ {
321
+ label: 'EVT',
322
+ rulePath: '.agent-context/rules/event-driven.md',
323
+ priority: 160,
324
+ triggers: [
325
+ 'event',
326
+ 'events',
327
+ 'message',
328
+ 'pubsub',
329
+ 'kafka',
330
+ 'broker',
331
+ 'outbox',
332
+ 'subscriber',
333
+ 'producer',
334
+ ],
335
+ },
336
+ {
337
+ label: 'SVC',
338
+ rulePath: '.agent-context/rules/microservices.md',
339
+ priority: 170,
340
+ triggers: [
341
+ 'microservice',
342
+ 'microservices',
343
+ 'distributed',
344
+ 'service split',
345
+ 'multi-service',
346
+ ],
347
+ },
348
+ {
349
+ label: 'RT',
350
+ rulePath: '.agent-context/rules/realtime.md',
351
+ priority: 180,
352
+ triggers: [
353
+ 'realtime',
354
+ 'real-time',
355
+ 'websocket',
356
+ 'sse',
357
+ 'socket',
358
+ 'stream',
359
+ 'live update',
360
+ ],
361
+ },
362
+ {
363
+ label: 'VER',
364
+ rulePath: '.agent-context/rules/api-versioning.md',
365
+ priority: 190,
366
+ triggers: [
367
+ 'version',
368
+ 'versioned',
369
+ 'versioning',
370
+ 'deprecate',
371
+ 'deprecation',
372
+ 'backward compatible',
373
+ 'breaking change',
374
+ ],
375
+ },
376
+ {
377
+ label: 'DEP',
378
+ rulePath: '.agent-context/rules/efficiency-vs-hype.md',
379
+ priority: 200,
380
+ triggers: [
381
+ 'dependency',
382
+ 'dependencies',
383
+ 'package',
384
+ 'library',
385
+ 'install',
386
+ 'npm',
387
+ 'framework',
388
+ ],
389
+ },
390
+ ];
391
+
392
+ export const PROMPT_CATALOG = [
393
+ {
394
+ promptPath: '.agent-context/prompts/review-code.md',
395
+ triggers: ['review', 'audit', 'check', 'analyze', 'analisa', 'cek'],
396
+ },
397
+ {
398
+ promptPath: '.agent-context/prompts/refactor.md',
399
+ triggers: ['refactor', 'improve', 'fix', 'clean up', 'cleanup', 'rapikan', 'perbaiki'],
400
+ },
401
+ {
402
+ promptPath: '.agent-context/prompts/init-project.md',
403
+ triggers: ['create', 'build', 'new project', 'scaffold', 'fresh project', 'bikin project'],
404
+ },
405
+ {
406
+ promptPath: '.agent-context/prompts/research-design.md',
407
+ labels: ['FE'],
408
+ triggers: ['redesign', 'redesain', 'ulang dari 0', 'research ulang'],
409
+ },
410
+ {
411
+ promptPath: '.agent-context/prompts/bootstrap-design.md',
412
+ labels: ['FE'],
413
+ triggers: ['ui', 'ux', 'frontend', 'layout', 'screen', 'redesign', 'redesain'],
414
+ },
415
+ ];
416
+
417
+ export const DOCS_BY_LABEL = {
418
+ ARCH: ['docs/architecture-decision-record.md', 'docs/flow-overview.md'],
419
+ API: ['docs/api-contract.md'],
420
+ DATA: ['docs/database-schema.md'],
421
+ FE: ['docs/DESIGN.md', 'docs/design-intent.json'],
422
+ TEST: ['docs/flow-overview.md'],
423
+ };
424
+
425
+ export const STATE_BY_LABEL = {
426
+ ARCH: ['.agent-context/state/architecture-map.md'],
427
+ DEP: ['.agent-context/state/dependency-map.md'],
428
+ };
@@ -0,0 +1,100 @@
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
+ ];
@@ -0,0 +1,44 @@
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
+ ];