@colin4k1024/tsp 2.5.2 → 2.5.3
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/lib/install-surface.js +5 -0
- package/hooks/harness-statusline.js +34 -11
- package/manifests/install-modules.json +98 -31
- package/package.json +2 -1
- package/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/scripts/__pycache__/build_platform_artifacts.cpython-311.pyc +0 -0
- package/scripts/__pycache__/install_platform.cpython-311.pyc +0 -0
- package/scripts/__pycache__/langfuse_trace.cpython-311.pyc +0 -0
- package/scripts/__pycache__/query_audit_logs.cpython-311.pyc +0 -0
- package/scripts/__pycache__/scan_leaked_keys.cpython-311.pyc +0 -0
- package/scripts/__pycache__/team_skills_platform.cpython-311.pyc +0 -0
- package/scripts/__pycache__/team_skills_platform.cpython-313.pyc +0 -0
- package/scripts/__pycache__/validate_library.cpython-311.pyc +0 -0
- package/scripts/__pycache__/validate_workflow_state.cpython-311.pyc +0 -0
- package/scripts/evolution/__pycache__/__init__.cpython-311.pyc +0 -0
- package/scripts/evolution/__pycache__/store.cpython-311.pyc +0 -0
- package/scripts/hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- package/scripts/hooks/__pycache__/mcp_health_check.cpython-311.pyc +0 -0
- package/scripts/hooks/__pycache__/observe.cpython-311.pyc +0 -0
- package/scripts/hooks/__pycache__/session_end.cpython-311.pyc +0 -0
- package/scripts/hooks/__pycache__/session_start.cpython-311.pyc +0 -0
- package/scripts/hooks/suggest-compact.js +41 -0
- package/scripts/lib/__pycache__/audit_logger.cpython-311.pyc +0 -0
- package/scripts/lib/__pycache__/audit_query.cpython-311.pyc +0 -0
- package/scripts/lib/__pycache__/hook_contract.cpython-311.pyc +0 -0
- package/scripts/lib/__pycache__/memory_store.cpython-311.pyc +0 -0
- package/scripts/lib/__pycache__/utils.cpython-311.pyc +0 -0
- package/scripts/lib/install/request.js +1 -1
- package/scripts/lib/install-manifests.js +9 -1
- package/scripts/lib/install-targets/cangming-home.js +143 -0
- package/scripts/lib/install-targets/codewhale-home.js +187 -0
- package/scripts/lib/install-targets/registry.js +5 -1
- package/scripts/lib/transcript-usage.js +183 -0
- package/scripts/test-cangming-install.js +105 -0
- package/skills/goframe-v2/examples/practices/quick-demo/manifest/config/config.yaml +14 -14
- package/skills/repo-scan/SKILL.md +63 -63
|
@@ -37,6 +37,11 @@ const TARGET_METADATA = Object.freeze({
|
|
|
37
37
|
installPath: '~/.config/opencode/',
|
|
38
38
|
scope: 'home-level',
|
|
39
39
|
},
|
|
40
|
+
cangming: {
|
|
41
|
+
label: 'Cangming',
|
|
42
|
+
installPath: '~/.config/cangming/',
|
|
43
|
+
scope: 'home-level',
|
|
44
|
+
},
|
|
40
45
|
codebuddy: {
|
|
41
46
|
label: 'CodeBuddy',
|
|
42
47
|
installPath: './.codebuddy/',
|
|
@@ -52,22 +52,45 @@ process.stdin.on('end', () => {
|
|
|
52
52
|
if (remaining != null) {
|
|
53
53
|
const usableRemaining = Math.max(0, ((remaining - AUTO_COMPACT_BUFFER_PCT) / (100 - AUTO_COMPACT_BUFFER_PCT)) * 100);
|
|
54
54
|
usedPct = Math.max(0, Math.min(100, Math.round(100 - usableRemaining)));
|
|
55
|
+
} else if (data.transcript_path) {
|
|
56
|
+
// Parse actual token usage from transcript JSONL (CCometixLine approach)
|
|
57
|
+
try {
|
|
58
|
+
const { resolveTranscriptMetrics } = require('../scripts/lib/transcript-usage');
|
|
59
|
+
const modelId = (data.model && data.model.id) || process.env.CLAUDE_MODEL || null;
|
|
60
|
+
const metrics = resolveTranscriptMetrics(data.transcript_path, modelId);
|
|
61
|
+
if (metrics) {
|
|
62
|
+
usedPct = Math.max(0, Math.min(100, Math.round(metrics.usagePct)));
|
|
63
|
+
}
|
|
64
|
+
} catch (_) { /* ignore */ }
|
|
55
65
|
|
|
56
|
-
//
|
|
57
|
-
if (
|
|
66
|
+
// Final fallback: file size estimate
|
|
67
|
+
if (usedPct == null) {
|
|
58
68
|
try {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
active_role: activeRole,
|
|
65
|
-
timestamp: Math.floor(Date.now() / 1000),
|
|
66
|
-
}));
|
|
69
|
+
const stat = fs.statSync(data.transcript_path);
|
|
70
|
+
const estimatedTokens = Math.round(stat.size * 0.25);
|
|
71
|
+
if (estimatedTokens > 0) {
|
|
72
|
+
usedPct = Math.max(0, Math.min(100, Math.round((estimatedTokens / 200000) * 100)));
|
|
73
|
+
}
|
|
67
74
|
} catch (_) { /* ignore */ }
|
|
68
75
|
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Write bridge file for downstream hooks (suggest-compact, context-monitor)
|
|
79
|
+
if (usedPct != null && session) {
|
|
80
|
+
try {
|
|
81
|
+
const bridgePath = path.join(os.tmpdir(), `harness-ctx-${session}.json`);
|
|
82
|
+
fs.writeFileSync(bridgePath, JSON.stringify({
|
|
83
|
+
session_id: session,
|
|
84
|
+
remaining_percentage: remaining != null ? remaining : null,
|
|
85
|
+
used_pct: usedPct,
|
|
86
|
+
active_role: activeRole,
|
|
87
|
+
timestamp: Math.floor(Date.now() / 1000),
|
|
88
|
+
}));
|
|
89
|
+
} catch (_) { /* ignore */ }
|
|
90
|
+
}
|
|
69
91
|
|
|
70
|
-
|
|
92
|
+
// Build progress bar (10 segments)
|
|
93
|
+
if (usedPct != null) {
|
|
71
94
|
const filled = Math.floor(usedPct / 10);
|
|
72
95
|
const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);
|
|
73
96
|
if (usedPct < 50) {
|
|
@@ -14,10 +14,12 @@
|
|
|
14
14
|
"antigravity",
|
|
15
15
|
"codex",
|
|
16
16
|
"opencode",
|
|
17
|
+
"cangming",
|
|
17
18
|
"codebuddy",
|
|
18
19
|
"copilot",
|
|
19
20
|
"windsurf",
|
|
20
|
-
"augment"
|
|
21
|
+
"augment",
|
|
22
|
+
"codewhale"
|
|
21
23
|
],
|
|
22
24
|
"dependencies": [],
|
|
23
25
|
"defaultInstall": true,
|
|
@@ -39,7 +41,9 @@
|
|
|
39
41
|
"antigravity",
|
|
40
42
|
"codex",
|
|
41
43
|
"opencode",
|
|
42
|
-
"
|
|
44
|
+
"cangming",
|
|
45
|
+
"codebuddy",
|
|
46
|
+
"codewhale"
|
|
43
47
|
],
|
|
44
48
|
"dependencies": [],
|
|
45
49
|
"defaultInstall": true,
|
|
@@ -59,7 +63,9 @@
|
|
|
59
63
|
"antigravity",
|
|
60
64
|
"codex",
|
|
61
65
|
"opencode",
|
|
62
|
-
"
|
|
66
|
+
"cangming",
|
|
67
|
+
"codebuddy",
|
|
68
|
+
"codewhale"
|
|
63
69
|
],
|
|
64
70
|
"dependencies": [],
|
|
65
71
|
"defaultInstall": true,
|
|
@@ -79,7 +85,9 @@
|
|
|
79
85
|
"claude",
|
|
80
86
|
"cursor",
|
|
81
87
|
"opencode",
|
|
82
|
-
"
|
|
88
|
+
"cangming",
|
|
89
|
+
"codebuddy",
|
|
90
|
+
"codewhale"
|
|
83
91
|
],
|
|
84
92
|
"dependencies": [],
|
|
85
93
|
"defaultInstall": true,
|
|
@@ -104,10 +112,12 @@
|
|
|
104
112
|
"codex",
|
|
105
113
|
"gemini",
|
|
106
114
|
"opencode",
|
|
115
|
+
"cangming",
|
|
107
116
|
"codebuddy",
|
|
108
117
|
"copilot",
|
|
109
118
|
"windsurf",
|
|
110
|
-
"augment"
|
|
119
|
+
"augment",
|
|
120
|
+
"codewhale"
|
|
111
121
|
],
|
|
112
122
|
"dependencies": [],
|
|
113
123
|
"defaultInstall": true,
|
|
@@ -162,7 +172,9 @@
|
|
|
162
172
|
"antigravity",
|
|
163
173
|
"codex",
|
|
164
174
|
"opencode",
|
|
165
|
-
"
|
|
175
|
+
"cangming",
|
|
176
|
+
"codebuddy",
|
|
177
|
+
"codewhale"
|
|
166
178
|
],
|
|
167
179
|
"dependencies": [
|
|
168
180
|
"rules-core",
|
|
@@ -190,7 +202,9 @@
|
|
|
190
202
|
"antigravity",
|
|
191
203
|
"codex",
|
|
192
204
|
"opencode",
|
|
193
|
-
"
|
|
205
|
+
"cangming",
|
|
206
|
+
"codebuddy",
|
|
207
|
+
"codewhale"
|
|
194
208
|
],
|
|
195
209
|
"dependencies": [
|
|
196
210
|
"platform-configs"
|
|
@@ -233,7 +247,9 @@
|
|
|
233
247
|
"antigravity",
|
|
234
248
|
"codex",
|
|
235
249
|
"opencode",
|
|
236
|
-
"
|
|
250
|
+
"cangming",
|
|
251
|
+
"codebuddy",
|
|
252
|
+
"codewhale"
|
|
237
253
|
],
|
|
238
254
|
"dependencies": [
|
|
239
255
|
"platform-configs"
|
|
@@ -260,7 +276,9 @@
|
|
|
260
276
|
"antigravity",
|
|
261
277
|
"codex",
|
|
262
278
|
"opencode",
|
|
263
|
-
"
|
|
279
|
+
"cangming",
|
|
280
|
+
"codebuddy",
|
|
281
|
+
"codewhale"
|
|
264
282
|
],
|
|
265
283
|
"dependencies": [
|
|
266
284
|
"workflow-quality"
|
|
@@ -284,7 +302,9 @@
|
|
|
284
302
|
"antigravity",
|
|
285
303
|
"codex",
|
|
286
304
|
"opencode",
|
|
287
|
-
"
|
|
305
|
+
"cangming",
|
|
306
|
+
"codebuddy",
|
|
307
|
+
"codewhale"
|
|
288
308
|
],
|
|
289
309
|
"dependencies": [
|
|
290
310
|
"platform-configs"
|
|
@@ -321,7 +341,9 @@
|
|
|
321
341
|
"antigravity",
|
|
322
342
|
"codex",
|
|
323
343
|
"opencode",
|
|
324
|
-
"
|
|
344
|
+
"cangming",
|
|
345
|
+
"codebuddy",
|
|
346
|
+
"codewhale"
|
|
325
347
|
],
|
|
326
348
|
"dependencies": [
|
|
327
349
|
"platform-configs"
|
|
@@ -357,7 +379,9 @@
|
|
|
357
379
|
"antigravity",
|
|
358
380
|
"codex",
|
|
359
381
|
"opencode",
|
|
360
|
-
"
|
|
382
|
+
"cangming",
|
|
383
|
+
"codebuddy",
|
|
384
|
+
"codewhale"
|
|
361
385
|
],
|
|
362
386
|
"dependencies": [
|
|
363
387
|
"platform-configs"
|
|
@@ -385,7 +409,9 @@
|
|
|
385
409
|
"antigravity",
|
|
386
410
|
"codex",
|
|
387
411
|
"opencode",
|
|
388
|
-
"
|
|
412
|
+
"cangming",
|
|
413
|
+
"codebuddy",
|
|
414
|
+
"codewhale"
|
|
389
415
|
],
|
|
390
416
|
"dependencies": [
|
|
391
417
|
"platform-configs"
|
|
@@ -411,7 +437,9 @@
|
|
|
411
437
|
"antigravity",
|
|
412
438
|
"codex",
|
|
413
439
|
"opencode",
|
|
414
|
-
"
|
|
440
|
+
"cangming",
|
|
441
|
+
"codebuddy",
|
|
442
|
+
"codewhale"
|
|
415
443
|
],
|
|
416
444
|
"dependencies": [
|
|
417
445
|
"platform-configs"
|
|
@@ -434,7 +462,9 @@
|
|
|
434
462
|
"antigravity",
|
|
435
463
|
"codex",
|
|
436
464
|
"opencode",
|
|
437
|
-
"
|
|
465
|
+
"cangming",
|
|
466
|
+
"codebuddy",
|
|
467
|
+
"codewhale"
|
|
438
468
|
],
|
|
439
469
|
"dependencies": [
|
|
440
470
|
"business-content"
|
|
@@ -460,7 +490,9 @@
|
|
|
460
490
|
"cursor",
|
|
461
491
|
"codex",
|
|
462
492
|
"opencode",
|
|
463
|
-
"
|
|
493
|
+
"cangming",
|
|
494
|
+
"codebuddy",
|
|
495
|
+
"codewhale"
|
|
464
496
|
],
|
|
465
497
|
"dependencies": [
|
|
466
498
|
"platform-configs"
|
|
@@ -484,7 +516,9 @@
|
|
|
484
516
|
"targets": [
|
|
485
517
|
"claude",
|
|
486
518
|
"codex",
|
|
487
|
-
"opencode"
|
|
519
|
+
"opencode",
|
|
520
|
+
"cangming",
|
|
521
|
+
"codewhale"
|
|
488
522
|
],
|
|
489
523
|
"dependencies": [
|
|
490
524
|
"commands-core",
|
|
@@ -511,7 +545,9 @@
|
|
|
511
545
|
"cursor",
|
|
512
546
|
"codex",
|
|
513
547
|
"opencode",
|
|
514
|
-
"
|
|
548
|
+
"cangming",
|
|
549
|
+
"codebuddy",
|
|
550
|
+
"codewhale"
|
|
515
551
|
],
|
|
516
552
|
"dependencies": [
|
|
517
553
|
"platform-configs"
|
|
@@ -532,7 +568,9 @@
|
|
|
532
568
|
"cursor",
|
|
533
569
|
"codex",
|
|
534
570
|
"opencode",
|
|
535
|
-
"
|
|
571
|
+
"cangming",
|
|
572
|
+
"codebuddy",
|
|
573
|
+
"codewhale"
|
|
536
574
|
],
|
|
537
575
|
"dependencies": [
|
|
538
576
|
"workflow-engine"
|
|
@@ -559,7 +597,9 @@
|
|
|
559
597
|
"antigravity",
|
|
560
598
|
"codex",
|
|
561
599
|
"opencode",
|
|
562
|
-
"
|
|
600
|
+
"cangming",
|
|
601
|
+
"codebuddy",
|
|
602
|
+
"codewhale"
|
|
563
603
|
],
|
|
564
604
|
"dependencies": [
|
|
565
605
|
"platform-configs"
|
|
@@ -598,7 +638,9 @@
|
|
|
598
638
|
"antigravity",
|
|
599
639
|
"codex",
|
|
600
640
|
"opencode",
|
|
601
|
-
"
|
|
641
|
+
"cangming",
|
|
642
|
+
"codebuddy",
|
|
643
|
+
"codewhale"
|
|
602
644
|
],
|
|
603
645
|
"dependencies": [
|
|
604
646
|
"platform-configs"
|
|
@@ -621,7 +663,9 @@
|
|
|
621
663
|
"antigravity",
|
|
622
664
|
"codex",
|
|
623
665
|
"opencode",
|
|
624
|
-
"
|
|
666
|
+
"cangming",
|
|
667
|
+
"codebuddy",
|
|
668
|
+
"codewhale"
|
|
625
669
|
],
|
|
626
670
|
"dependencies": [
|
|
627
671
|
"platform-configs"
|
|
@@ -650,7 +694,9 @@
|
|
|
650
694
|
"antigravity",
|
|
651
695
|
"codex",
|
|
652
696
|
"opencode",
|
|
653
|
-
"
|
|
697
|
+
"cangming",
|
|
698
|
+
"codebuddy",
|
|
699
|
+
"codewhale"
|
|
654
700
|
],
|
|
655
701
|
"dependencies": [
|
|
656
702
|
"platform-configs"
|
|
@@ -673,7 +719,9 @@
|
|
|
673
719
|
"antigravity",
|
|
674
720
|
"codex",
|
|
675
721
|
"opencode",
|
|
676
|
-
"
|
|
722
|
+
"cangming",
|
|
723
|
+
"codebuddy",
|
|
724
|
+
"codewhale"
|
|
677
725
|
],
|
|
678
726
|
"dependencies": [
|
|
679
727
|
"platform-configs"
|
|
@@ -695,7 +743,9 @@
|
|
|
695
743
|
"claude",
|
|
696
744
|
"cursor",
|
|
697
745
|
"codex",
|
|
698
|
-
"opencode"
|
|
746
|
+
"opencode",
|
|
747
|
+
"cangming",
|
|
748
|
+
"codewhale"
|
|
699
749
|
],
|
|
700
750
|
"dependencies": [
|
|
701
751
|
"agents-core",
|
|
@@ -720,7 +770,9 @@
|
|
|
720
770
|
"claude",
|
|
721
771
|
"cursor",
|
|
722
772
|
"codex",
|
|
723
|
-
"opencode"
|
|
773
|
+
"opencode",
|
|
774
|
+
"cangming",
|
|
775
|
+
"codewhale"
|
|
724
776
|
],
|
|
725
777
|
"dependencies": [
|
|
726
778
|
"team-workflow"
|
|
@@ -760,8 +812,17 @@
|
|
|
760
812
|
"skills/workflow-forensics",
|
|
761
813
|
"templates/context-docs"
|
|
762
814
|
],
|
|
763
|
-
"targets": [
|
|
764
|
-
|
|
815
|
+
"targets": [
|
|
816
|
+
"claude",
|
|
817
|
+
"cursor",
|
|
818
|
+
"codex",
|
|
819
|
+
"opencode",
|
|
820
|
+
"cangming",
|
|
821
|
+
"codewhale"
|
|
822
|
+
],
|
|
823
|
+
"dependencies": [
|
|
824
|
+
"team-workflow"
|
|
825
|
+
],
|
|
765
826
|
"defaultInstall": false,
|
|
766
827
|
"cost": "heavy",
|
|
767
828
|
"stability": "stable"
|
|
@@ -781,7 +842,9 @@
|
|
|
781
842
|
"antigravity",
|
|
782
843
|
"codex",
|
|
783
844
|
"opencode",
|
|
784
|
-
"
|
|
845
|
+
"cangming",
|
|
846
|
+
"codebuddy",
|
|
847
|
+
"codewhale"
|
|
785
848
|
],
|
|
786
849
|
"dependencies": [
|
|
787
850
|
"platform-configs",
|
|
@@ -808,7 +871,9 @@
|
|
|
808
871
|
"antigravity",
|
|
809
872
|
"codex",
|
|
810
873
|
"opencode",
|
|
811
|
-
"
|
|
874
|
+
"cangming",
|
|
875
|
+
"codebuddy",
|
|
876
|
+
"codewhale"
|
|
812
877
|
],
|
|
813
878
|
"dependencies": [
|
|
814
879
|
"hooks-runtime",
|
|
@@ -843,7 +908,9 @@
|
|
|
843
908
|
"antigravity",
|
|
844
909
|
"codex",
|
|
845
910
|
"opencode",
|
|
846
|
-
"
|
|
911
|
+
"cangming",
|
|
912
|
+
"codebuddy",
|
|
913
|
+
"codewhale"
|
|
847
914
|
],
|
|
848
915
|
"dependencies": [
|
|
849
916
|
"commands-core",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@colin4k1024/tsp",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.3",
|
|
4
4
|
"description": "Open-source Team Skills Platform for role-based AI delivery workflows, shared skills, hooks, commands, and multi-platform installs.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"install:codex": "node scripts/install-apply.js --profile full --target codex",
|
|
63
63
|
"install:cursor": "node scripts/install-apply.js --profile full --target cursor",
|
|
64
64
|
"install:opencode": "node scripts/install-apply.js --profile full --target opencode",
|
|
65
|
+
"install:cangming": "node scripts/install-apply.js --profile full --target cangming",
|
|
65
66
|
"prepack": "node scripts/validate-prebuilt.js",
|
|
66
67
|
"prepublishOnly": "node scripts/validate-prebuilt.js",
|
|
67
68
|
"test": "node tests/run-all.js",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -160,6 +160,27 @@ function resolveContextMetrics(data) {
|
|
|
160
160
|
};
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
// Transcript JSONL usage parsing (CCometixLine approach)
|
|
164
|
+
const transcriptPath = data.transcript_path;
|
|
165
|
+
const modelId = (data.model && data.model.id) || process.env.CLAUDE_MODEL || null;
|
|
166
|
+
if (transcriptPath && typeof transcriptPath === 'string') {
|
|
167
|
+
try {
|
|
168
|
+
const { resolveTranscriptMetrics } = require('../lib/transcript-usage');
|
|
169
|
+
const transcriptMetrics = resolveTranscriptMetrics(transcriptPath, modelId);
|
|
170
|
+
if (transcriptMetrics) {
|
|
171
|
+
return {
|
|
172
|
+
usagePct: clampPct(transcriptMetrics.usagePct),
|
|
173
|
+
remainingPct: null,
|
|
174
|
+
contextLimit: transcriptMetrics.contextLimit,
|
|
175
|
+
contextSize: transcriptMetrics.contextTokens,
|
|
176
|
+
source: 'transcript_usage',
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
} catch (_) {
|
|
180
|
+
// transcript parsing failed — fall through
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
163
184
|
const bridge = readBridgeMetrics(sessionKey(data));
|
|
164
185
|
if (bridge) {
|
|
165
186
|
return {
|
|
@@ -169,6 +190,26 @@ function resolveContextMetrics(data) {
|
|
|
169
190
|
};
|
|
170
191
|
}
|
|
171
192
|
|
|
193
|
+
// Final fallback: estimate from transcript file size
|
|
194
|
+
if (transcriptPath && typeof transcriptPath === 'string') {
|
|
195
|
+
try {
|
|
196
|
+
const stat = fs.statSync(transcriptPath);
|
|
197
|
+
const estimatedTokens = Math.round(stat.size * 0.25);
|
|
198
|
+
if (estimatedTokens > 0) {
|
|
199
|
+
const usagePct = clampPct((estimatedTokens / contextLimit) * 100);
|
|
200
|
+
return {
|
|
201
|
+
usagePct,
|
|
202
|
+
remainingPct: null,
|
|
203
|
+
contextLimit,
|
|
204
|
+
contextSize: estimatedTokens,
|
|
205
|
+
source: 'transcript_size',
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
} catch (_) {
|
|
209
|
+
// transcript not accessible — fall through
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
172
213
|
return null;
|
|
173
214
|
}
|
|
174
215
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const { validateInstallModuleIds } = require('../install-manifests');
|
|
4
4
|
const { normalizeInstallTarget } = require('../install-targets/registry');
|
|
5
5
|
|
|
6
|
-
const LEGACY_INSTALL_TARGETS = ['claude', 'cursor', 'antigravity', 'codex', 'opencode'];
|
|
6
|
+
const LEGACY_INSTALL_TARGETS = ['claude', 'cursor', 'antigravity', 'codex', 'opencode', 'cangming'];
|
|
7
7
|
|
|
8
8
|
function dedupeStrings(values) {
|
|
9
9
|
return [...new Set((Array.isArray(values) ? values : []).map(value => String(value).trim()).filter(Boolean))];
|
|
@@ -8,7 +8,7 @@ const {
|
|
|
8
8
|
} = require('./install-targets/registry');
|
|
9
9
|
|
|
10
10
|
const DEFAULT_REPO_ROOT = path.join(__dirname, '../..');
|
|
11
|
-
const SUPPORTED_INSTALL_TARGETS = ['claude', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'copilot', 'windsurf', 'augment'];
|
|
11
|
+
const SUPPORTED_INSTALL_TARGETS = ['claude', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'cangming', 'codewhale', 'codebuddy', 'copilot', 'windsurf', 'augment'];
|
|
12
12
|
const COMPONENT_FAMILY_PREFIXES = {
|
|
13
13
|
baseline: 'baseline:',
|
|
14
14
|
language: 'lang:',
|
|
@@ -54,6 +54,14 @@ const LEGACY_COMPAT_BASE_MODULE_IDS_BY_TARGET = Object.freeze({
|
|
|
54
54
|
'platform-configs',
|
|
55
55
|
'workflow-quality',
|
|
56
56
|
],
|
|
57
|
+
codewhale: [
|
|
58
|
+
'rules-core',
|
|
59
|
+
'agents-core',
|
|
60
|
+
'commands-core',
|
|
61
|
+
'hooks-runtime',
|
|
62
|
+
'platform-configs',
|
|
63
|
+
'workflow-quality',
|
|
64
|
+
],
|
|
57
65
|
});
|
|
58
66
|
const LEGACY_LANGUAGE_ALIAS_TO_CANONICAL = Object.freeze({
|
|
59
67
|
cpp: 'cpp',
|