@azure-id/orc 1.4.2 → 1.5.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.
- package/CHANGELOG.md +111 -0
- package/README.md +46 -46
- package/bin/cli.js +5918 -400
- package/bin/mockrun-catalog.js +4 -0
- package/bin/verify-contracts.js +4475 -4410
- package/bin/verify-package.js +21 -2
- package/bin/webui/api.js +108 -8
- package/bin/webui/app.html +9 -0
- package/bin/webui/css/06-responsive.css +14 -0
- package/bin/webui/css/panels/test.css +132 -0
- package/bin/webui/fixtures/index.js +23 -1
- package/bin/webui/fixtures/test.js +547 -0
- package/bin/webui/i18n/en/common.json +1 -0
- package/bin/webui/i18n/en/nav.json +1 -0
- package/bin/webui/i18n/en/overview.json +4 -0
- package/bin/webui/i18n/en/test.json +141 -0
- package/bin/webui/i18n/id/common.json +1 -0
- package/bin/webui/i18n/id/nav.json +1 -0
- package/bin/webui/i18n/id/overview.json +4 -0
- package/bin/webui/i18n/id/test.json +141 -0
- package/bin/webui/js/01-i18n.js +1 -0
- package/bin/webui/js/panels/challenge.js +8 -3
- package/bin/webui/js/panels/overview.js +10 -0
- package/bin/webui/js/panels/test.js +733 -0
- package/bin/webui/serve.js +572 -557
- package/mock-run/orc-test.md +327 -0
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +2 -0
- package/templates/agents/orc-test-designer-opus-5-high.md +158 -0
- package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -0
- package/templates/commands/orc-test.md +66 -0
- package/templates/skills/_shared/extra-dispatch.md +1346 -1337
- package/templates/skills/_shared/live-target.md +188 -0
- package/templates/skills/_shared/phases/trace.md +2 -2
- package/templates/skills/_shared/wait.md +241 -240
- package/templates/skills/orc-test/SKILL.md +233 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
{
|
|
2
|
+
"test.title": "Test",
|
|
3
|
+
"test.sub": "The lane that runs the test. This page renders what the CLI measured. It never sends a request.",
|
|
4
|
+
"test.none": "No test run here yet",
|
|
5
|
+
"test.noneHint": "A test run starts with a target you freeze yourself. Nothing here has a default it could guess.",
|
|
6
|
+
"test.initCmd": "Start one in your terminal:",
|
|
7
|
+
"test.pick": "Run",
|
|
8
|
+
"test.pickHint": "Pick a run. The tabs below show what that run measured.",
|
|
9
|
+
|
|
10
|
+
"test.strip.state": "State",
|
|
11
|
+
"test.strip.cases": "Cases",
|
|
12
|
+
"test.strip.runs": "Runs",
|
|
13
|
+
"test.strip.findings": "Findings",
|
|
14
|
+
"test.strip.security": "Security tier",
|
|
15
|
+
"test.strip.observed": "observed",
|
|
16
|
+
|
|
17
|
+
"test.tab.targets": "Targets",
|
|
18
|
+
"test.tab.surface": "Surface",
|
|
19
|
+
"test.tab.cases": "Cases",
|
|
20
|
+
"test.tab.runs": "Runs",
|
|
21
|
+
"test.tab.findings": "Findings",
|
|
22
|
+
|
|
23
|
+
"test.free": "A free action gets a button. An action that costs model tokens gets a command you copy.",
|
|
24
|
+
"test.paidWhy": "This page runs no lane and dispatches no agent. Copy the command and run it in your terminal.",
|
|
25
|
+
"test.trafficWhy": "This page never sends a request to the system under test. `orc test run` does, so it is a command you copy and never a button here.",
|
|
26
|
+
|
|
27
|
+
"test.target.title": "The frozen target",
|
|
28
|
+
"test.target.kind": "Kind",
|
|
29
|
+
"test.target.env": "Environment",
|
|
30
|
+
"test.target.baseUrl": "Base URL",
|
|
31
|
+
"test.target.origin": "Origin fence",
|
|
32
|
+
"test.target.frozen": "The target is frozen at init. This lane does not decide it again.",
|
|
33
|
+
"test.target.authorized": "Authorized by",
|
|
34
|
+
"test.target.authorizedNote": "Recorded word for word. ORC never checked it.",
|
|
35
|
+
"test.target.authorizedEmpty": "Nobody filled this in.",
|
|
36
|
+
"test.target.destructive": "Destructive writes",
|
|
37
|
+
"test.target.destructiveReason": "Reason given",
|
|
38
|
+
"test.target.identities": "Identities",
|
|
39
|
+
"test.target.oneIdentity": "Fewer than two identities. API1 and API5 cannot be measured. They keep their slot and never become a pass.",
|
|
40
|
+
"test.target.remoteNote": "This target is remote. ORC starts nothing and stops nothing on a host you do not own.",
|
|
41
|
+
"test.target.unreadable": "This run's ledger did not parse. It is shown as a row so it is not lost.",
|
|
42
|
+
|
|
43
|
+
"test.env.title": "The environment",
|
|
44
|
+
"test.env.check": "Check the environment",
|
|
45
|
+
"test.env.checkWhy": "Asks the target whether it is up. It starts nothing, stops nothing and fixes nothing.",
|
|
46
|
+
"test.env.notStored": "A health state is not stored. It is measured when you ask for it.",
|
|
47
|
+
"test.env.detected": "Start command found",
|
|
48
|
+
"test.env.lookedFor": "Files looked at",
|
|
49
|
+
"test.env.health": "Health paths tried",
|
|
50
|
+
"test.env.process": "Process",
|
|
51
|
+
"test.env.logs": "Last log lines",
|
|
52
|
+
"test.env.vars": "Environment values missing",
|
|
53
|
+
"test.env.varsNote": "ORC names the missing keys and writes no value for one. Only you know the right value.",
|
|
54
|
+
"test.env.handBack": "ORC does not repair the system it is testing. Fix it yourself, then check again.",
|
|
55
|
+
|
|
56
|
+
"test.surface.title": "The surface",
|
|
57
|
+
"test.surface.take": "Take the surface",
|
|
58
|
+
"test.surface.takeWhy": "Reads this repository and the target's own spec document. It costs no model tokens.",
|
|
59
|
+
"test.surface.none": "The surface has not been taken yet",
|
|
60
|
+
"test.surface.specDisk": "Spec file here",
|
|
61
|
+
"test.surface.specTarget": "Spec at the target",
|
|
62
|
+
"test.surface.frameworks": "Frameworks found",
|
|
63
|
+
"test.surface.files": "Files read",
|
|
64
|
+
"test.surface.routes": "Routes",
|
|
65
|
+
"test.surface.mounts": "Mounted at",
|
|
66
|
+
"test.surface.mountsNote": "A mounted prefix is listed, never folded into a child route. The child lives in another file and may be mounted twice.",
|
|
67
|
+
"test.surface.unresolved": "Not worked out",
|
|
68
|
+
"test.surface.unresolvedNote": "ORC does not guess a route. These need a person to look.",
|
|
69
|
+
"test.surface.diff": "Code against live",
|
|
70
|
+
"test.surface.codeOnly": "In the code, not live",
|
|
71
|
+
"test.surface.liveOnly": "Live, not in the code",
|
|
72
|
+
"test.surface.notMeasured": "Not measured",
|
|
73
|
+
"test.surface.inCode": "in the code",
|
|
74
|
+
"test.surface.notInCode": "not in the code",
|
|
75
|
+
"test.surface.notLive": "not live",
|
|
76
|
+
"test.surface.liveYes": "live",
|
|
77
|
+
"test.surface.liveUnknown": "live state not measured",
|
|
78
|
+
|
|
79
|
+
"test.cases.title": "The case matrix",
|
|
80
|
+
"test.cases.none": "No case has been derived yet",
|
|
81
|
+
"test.cases.derived": "Derived for free from the surface. Zero model tokens.",
|
|
82
|
+
"test.cases.budget": "Case budget",
|
|
83
|
+
"test.cases.budgetReached": "The budget was reached. This is a planned stop, not an interruption.",
|
|
84
|
+
"test.cases.unfinished": "Not expanded",
|
|
85
|
+
"test.cases.gap": "gap",
|
|
86
|
+
"test.cases.gapNote": "A gap is what a schema could not answer. Filling one costs model tokens.",
|
|
87
|
+
"test.cases.notRun": "not run",
|
|
88
|
+
"test.cases.identity": "as",
|
|
89
|
+
"test.cases.mutates": "writes",
|
|
90
|
+
"test.cases.evidence": "Evidence",
|
|
91
|
+
|
|
92
|
+
"test.security.title": "OWASP API Top 10 (2023)",
|
|
93
|
+
"test.security.closed": "The set is closed. A probe that is not in this table is not a probe this lane runs.",
|
|
94
|
+
"test.security.detect": "It detects and never exploits. Every probe shows the condition and stops there.",
|
|
95
|
+
"test.security.tier": "Tier",
|
|
96
|
+
"test.security.tierDerived": "The cases were derived at this tier. A setting that moved since is named here, not applied.",
|
|
97
|
+
"test.security.uncheckedNote": "A row it could not measure keeps its slot, never becomes a pass, and never raises the exit code.",
|
|
98
|
+
"test.security.needs": "Needs",
|
|
99
|
+
"test.security.probe": "Probe",
|
|
100
|
+
"test.security.severityWho": "This severity is ORC's. The model's own wording is kept beside it and never used.",
|
|
101
|
+
"test.security.claimed": "The interpreter said",
|
|
102
|
+
"test.security.statics": "Read from the code only. Nothing was called.",
|
|
103
|
+
|
|
104
|
+
"test.runs.title": "Runs",
|
|
105
|
+
"test.runs.none": "Nothing has been run yet",
|
|
106
|
+
"test.runs.cmd": "Run it from your terminal:",
|
|
107
|
+
"test.runs.stopped": "The ladder stopped at this tier",
|
|
108
|
+
"test.runs.stoppedWhy": "A red happy path makes the later tiers meaningless, so the run stops and hands back. Fix it and run again for free.",
|
|
109
|
+
"test.runs.dir": "Written to",
|
|
110
|
+
"test.runs.flakes": "Flakes",
|
|
111
|
+
"test.runs.flakesNote": "A flake is recorded, never retried away. The instability is the finding.",
|
|
112
|
+
"test.runs.was": "was",
|
|
113
|
+
"test.runs.now": "now",
|
|
114
|
+
|
|
115
|
+
"test.findings.title": "Findings",
|
|
116
|
+
"test.findings.none": "No finding has been recorded",
|
|
117
|
+
"test.findings.observed": "observed",
|
|
118
|
+
"test.findings.notObserved": "not observed",
|
|
119
|
+
"test.findings.notObservedNote": "This was not watched happening. It is a candidate, not a finding, and it gets no CVSS score.",
|
|
120
|
+
"test.findings.evidenceNote": "Every finding names evidence on disk. One that cannot is dropped by name and counted.",
|
|
121
|
+
"test.findings.impact": "Impact",
|
|
122
|
+
"test.findings.fix": "Suggested fix",
|
|
123
|
+
"test.findings.target": "Target",
|
|
124
|
+
"test.findings.case": "Case",
|
|
125
|
+
"test.findings.report": "Render the report",
|
|
126
|
+
"test.findings.reportWhy": "Writes REPORT.md from the ledger. It works nothing out of its own.",
|
|
127
|
+
"test.findings.reportAt": "Report",
|
|
128
|
+
"test.findings.reportMissing": "REPORT.md has not been written yet.",
|
|
129
|
+
"test.findings.neverStaged": "This folder holds real response bodies from a real system. It is never staged, and ORC does not edit your .gitignore.",
|
|
130
|
+
|
|
131
|
+
"test.ui.title": "The front-end driver",
|
|
132
|
+
"test.ui.version": "Version",
|
|
133
|
+
"test.ui.minVersion": "Lowest version this lane accepts",
|
|
134
|
+
"test.ui.binary": "Program",
|
|
135
|
+
"test.ui.from": "Found in",
|
|
136
|
+
"test.ui.browsers": "Browser builds",
|
|
137
|
+
"test.ui.installNote": "ORC names this command and never runs it. It does not install into your project.",
|
|
138
|
+
"test.ui.noAlternative": "There is no way to drive a real browser without a browser build.",
|
|
139
|
+
"test.ui.off": "The front-end half is off. That is a setting, not a missing program.",
|
|
140
|
+
"test.ui.fresh": "Worked out fresh on every read, and never stored."
|
|
141
|
+
}
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"setting.resetTo": "kembalikan ke {value}",
|
|
65
65
|
"common.open": "Buka",
|
|
66
66
|
"common.writeFail": "Gagal dijalankan",
|
|
67
|
+
"common.runInTerminal": "Jalankan ini di terminal Anda",
|
|
67
68
|
"common.runInClaude": "Jalankan ini di Claude Code",
|
|
68
69
|
"shortcuts.panelsLetters": "Janji, Batas, Ubah Sendiri, Extra, Contoh Penggunaan Skill",
|
|
69
70
|
"common.confirm": "Konfirmasi"
|
|
@@ -78,6 +78,10 @@
|
|
|
78
78
|
"overview.item.pactBroken.cta": "Buka Janji",
|
|
79
79
|
"overview.item.boundaryRefuse.cta": "Buka Batas",
|
|
80
80
|
"overview.item.docDrifted.cta": "Buka Dokumen",
|
|
81
|
+
"overview.item.testEnvUnhealthy.cta": "Buka Test",
|
|
82
|
+
"overview.item.testRunRed.cta": "Buka Test",
|
|
83
|
+
"overview.item.testUncheckedOwasp.cta": "Buka Test",
|
|
84
|
+
"overview.item.testEvidenceUnstaged.cta": "Buka Test",
|
|
81
85
|
"overview.item.wikiDebt.cta": "Buka Pengetahuan",
|
|
82
86
|
"overview.item.extraFindings.cta": "Buka Extra",
|
|
83
87
|
"overview.item.legacyGlobalPackage.cta": "Buka Pemeliharaan",
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
{
|
|
2
|
+
"test.title": "Test",
|
|
3
|
+
"test.sub": "Jalur yang menjalankan tes. Halaman ini menampilkan apa yang diukur CLI. Halaman ini tidak pernah mengirim permintaan.",
|
|
4
|
+
"test.none": "Belum ada test run di sini",
|
|
5
|
+
"test.noneHint": "Sebuah test run dimulai dari target yang Anda bekukan sendiri. Tidak ada nilai baku yang bisa ditebak di sini.",
|
|
6
|
+
"test.initCmd": "Mulai satu di terminal Anda:",
|
|
7
|
+
"test.pick": "Run",
|
|
8
|
+
"test.pickHint": "Pilih satu run. Tab di bawah menampilkan apa yang diukur run itu.",
|
|
9
|
+
|
|
10
|
+
"test.strip.state": "Status",
|
|
11
|
+
"test.strip.cases": "Kasus",
|
|
12
|
+
"test.strip.runs": "Run",
|
|
13
|
+
"test.strip.findings": "Temuan",
|
|
14
|
+
"test.strip.security": "Tingkat keamanan",
|
|
15
|
+
"test.strip.observed": "teramati",
|
|
16
|
+
|
|
17
|
+
"test.tab.targets": "Target",
|
|
18
|
+
"test.tab.surface": "Permukaan",
|
|
19
|
+
"test.tab.cases": "Kasus",
|
|
20
|
+
"test.tab.runs": "Run",
|
|
21
|
+
"test.tab.findings": "Temuan",
|
|
22
|
+
|
|
23
|
+
"test.free": "Tindakan gratis mendapat tombol. Tindakan yang memakai token model mendapat perintah yang Anda salin.",
|
|
24
|
+
"test.paidWhy": "Halaman ini tidak menjalankan lane dan tidak mengirim agent. Salin perintahnya dan jalankan di terminal Anda.",
|
|
25
|
+
"test.trafficWhy": "Halaman ini tidak pernah mengirim permintaan ke sistem yang diuji. `orc test run` mengirimnya, jadi itu perintah yang Anda salin dan bukan tombol di sini.",
|
|
26
|
+
|
|
27
|
+
"test.target.title": "Target yang dibekukan",
|
|
28
|
+
"test.target.kind": "Jenis",
|
|
29
|
+
"test.target.env": "Lingkungan",
|
|
30
|
+
"test.target.baseUrl": "Base URL",
|
|
31
|
+
"test.target.origin": "Pagar origin",
|
|
32
|
+
"test.target.frozen": "Target dibekukan saat init. Jalur ini tidak memutuskannya lagi.",
|
|
33
|
+
"test.target.authorized": "Diizinkan oleh",
|
|
34
|
+
"test.target.authorizedNote": "Dicatat kata demi kata. ORC tidak pernah memeriksanya.",
|
|
35
|
+
"test.target.authorizedEmpty": "Tidak ada yang mengisi ini.",
|
|
36
|
+
"test.target.destructive": "Penulisan destruktif",
|
|
37
|
+
"test.target.destructiveReason": "Alasan yang diberikan",
|
|
38
|
+
"test.target.identities": "Identitas",
|
|
39
|
+
"test.target.oneIdentity": "Kurang dari dua identitas. API1 dan API5 tidak dapat diukur. Keduanya tetap punya baris dan tidak pernah menjadi lulus.",
|
|
40
|
+
"test.target.remoteNote": "Target ini remote. ORC tidak menjalankan dan tidak menghentikan apa pun di host yang bukan milik Anda.",
|
|
41
|
+
"test.target.unreadable": "Buku besar run ini tidak terbaca. Ia tetap ditampilkan sebagai baris agar tidak hilang.",
|
|
42
|
+
|
|
43
|
+
"test.env.title": "Lingkungan",
|
|
44
|
+
"test.env.check": "Periksa lingkungan",
|
|
45
|
+
"test.env.checkWhy": "Menanyakan ke target apakah ia hidup. Tidak menjalankan, tidak menghentikan, dan tidak memperbaiki apa pun.",
|
|
46
|
+
"test.env.notStored": "Status kesehatan tidak disimpan. Ia diukur saat Anda memintanya.",
|
|
47
|
+
"test.env.detected": "Perintah start yang ditemukan",
|
|
48
|
+
"test.env.lookedFor": "Berkas yang dilihat",
|
|
49
|
+
"test.env.health": "Jalur health yang dicoba",
|
|
50
|
+
"test.env.process": "Proses",
|
|
51
|
+
"test.env.logs": "Baris log terakhir",
|
|
52
|
+
"test.env.vars": "Nilai lingkungan yang hilang",
|
|
53
|
+
"test.env.varsNote": "ORC menyebut kunci yang hilang dan tidak menulis nilai untuk satu pun. Hanya Anda yang tahu nilai yang benar.",
|
|
54
|
+
"test.env.handBack": "ORC tidak memperbaiki sistem yang sedang diujinya. Perbaiki sendiri, lalu periksa lagi.",
|
|
55
|
+
|
|
56
|
+
"test.surface.title": "Permukaan",
|
|
57
|
+
"test.surface.take": "Ambil permukaan",
|
|
58
|
+
"test.surface.takeWhy": "Membaca repositori ini dan dokumen spesifikasi milik target. Tidak memakai token model.",
|
|
59
|
+
"test.surface.none": "Permukaan belum diambil",
|
|
60
|
+
"test.surface.specDisk": "Berkas spesifikasi di sini",
|
|
61
|
+
"test.surface.specTarget": "Spesifikasi di target",
|
|
62
|
+
"test.surface.frameworks": "Framework yang ditemukan",
|
|
63
|
+
"test.surface.files": "Berkas yang dibaca",
|
|
64
|
+
"test.surface.routes": "Rute",
|
|
65
|
+
"test.surface.mounts": "Dipasang di",
|
|
66
|
+
"test.surface.mountsNote": "Awalan yang dipasang hanya didaftar, tidak pernah dilipat ke rute anak. Anak itu ada di berkas lain dan bisa dipasang dua kali.",
|
|
67
|
+
"test.surface.unresolved": "Belum terpecahkan",
|
|
68
|
+
"test.surface.unresolvedNote": "ORC tidak menebak rute. Bagian ini perlu dilihat orang.",
|
|
69
|
+
"test.surface.diff": "Kode dibanding live",
|
|
70
|
+
"test.surface.codeOnly": "Ada di kode, tidak live",
|
|
71
|
+
"test.surface.liveOnly": "Live, tidak ada di kode",
|
|
72
|
+
"test.surface.notMeasured": "Tidak diukur",
|
|
73
|
+
"test.surface.inCode": "ada di kode",
|
|
74
|
+
"test.surface.notInCode": "tidak ada di kode",
|
|
75
|
+
"test.surface.notLive": "tidak live",
|
|
76
|
+
"test.surface.liveYes": "live",
|
|
77
|
+
"test.surface.liveUnknown": "status live tidak diukur",
|
|
78
|
+
|
|
79
|
+
"test.cases.title": "Matriks kasus",
|
|
80
|
+
"test.cases.none": "Belum ada kasus yang diturunkan",
|
|
81
|
+
"test.cases.derived": "Diturunkan gratis dari permukaan. Nol token model.",
|
|
82
|
+
"test.cases.budget": "Anggaran kasus",
|
|
83
|
+
"test.cases.budgetReached": "Anggaran tercapai. Ini berhenti terencana, bukan gangguan.",
|
|
84
|
+
"test.cases.unfinished": "Tidak diperluas",
|
|
85
|
+
"test.cases.gap": "celah",
|
|
86
|
+
"test.cases.gapNote": "Celah adalah hal yang tidak bisa dijawab sebuah skema. Mengisinya memakai token model.",
|
|
87
|
+
"test.cases.notRun": "belum dijalankan",
|
|
88
|
+
"test.cases.identity": "sebagai",
|
|
89
|
+
"test.cases.mutates": "menulis",
|
|
90
|
+
"test.cases.evidence": "Bukti",
|
|
91
|
+
|
|
92
|
+
"test.security.title": "OWASP API Top 10 (2023)",
|
|
93
|
+
"test.security.closed": "Kumpulan ini tertutup. Uji yang tidak ada di tabel ini bukan uji yang dijalankan jalur ini.",
|
|
94
|
+
"test.security.detect": "Ia mendeteksi dan tidak pernah mengeksploitasi. Setiap uji menunjukkan kondisinya lalu berhenti di situ.",
|
|
95
|
+
"test.security.tier": "Tingkat",
|
|
96
|
+
"test.security.tierDerived": "Kasus diturunkan pada tingkat ini. Pengaturan yang berubah sejak itu disebut di sini, bukan diterapkan.",
|
|
97
|
+
"test.security.uncheckedNote": "Baris yang tidak dapat diukur tetap punya tempat, tidak pernah menjadi lulus, dan tidak pernah menaikkan kode keluar.",
|
|
98
|
+
"test.security.needs": "Perlu",
|
|
99
|
+
"test.security.probe": "Uji",
|
|
100
|
+
"test.security.severityWho": "Tingkat bahaya ini milik ORC. Kata model sendiri disimpan di sebelahnya dan tidak dipakai.",
|
|
101
|
+
"test.security.claimed": "Penafsir menyebut",
|
|
102
|
+
"test.security.statics": "Dibaca dari kode saja. Tidak ada yang dipanggil.",
|
|
103
|
+
|
|
104
|
+
"test.runs.title": "Run",
|
|
105
|
+
"test.runs.none": "Belum ada yang dijalankan",
|
|
106
|
+
"test.runs.cmd": "Jalankan dari terminal Anda:",
|
|
107
|
+
"test.runs.stopped": "Tangga berhenti di tingkat ini",
|
|
108
|
+
"test.runs.stoppedWhy": "Jalur bahagia yang merah membuat tingkat berikutnya tidak berarti, jadi run berhenti dan menyerahkan kembali. Perbaiki lalu jalankan lagi secara gratis.",
|
|
109
|
+
"test.runs.dir": "Ditulis ke",
|
|
110
|
+
"test.runs.flakes": "Hasil goyah",
|
|
111
|
+
"test.runs.flakesNote": "Hasil goyah dicatat, tidak pernah diulang sampai hilang. Ketidakstabilan itulah temuannya.",
|
|
112
|
+
"test.runs.was": "dulu",
|
|
113
|
+
"test.runs.now": "sekarang",
|
|
114
|
+
|
|
115
|
+
"test.findings.title": "Temuan",
|
|
116
|
+
"test.findings.none": "Belum ada temuan yang dicatat",
|
|
117
|
+
"test.findings.observed": "teramati",
|
|
118
|
+
"test.findings.notObserved": "tidak teramati",
|
|
119
|
+
"test.findings.notObservedNote": "Ini tidak disaksikan terjadi. Ini calon, bukan temuan, dan tidak mendapat skor CVSS.",
|
|
120
|
+
"test.findings.evidenceNote": "Setiap temuan menyebut bukti di disk. Yang tidak bisa akan digugurkan dengan nama dan dihitung.",
|
|
121
|
+
"test.findings.impact": "Dampak",
|
|
122
|
+
"test.findings.fix": "Usulan perbaikan",
|
|
123
|
+
"test.findings.target": "Target",
|
|
124
|
+
"test.findings.case": "Kasus",
|
|
125
|
+
"test.findings.report": "Buat laporan",
|
|
126
|
+
"test.findings.reportWhy": "Menulis REPORT.md dari buku besar. Ia tidak menghitung apa pun sendiri.",
|
|
127
|
+
"test.findings.reportAt": "Laporan",
|
|
128
|
+
"test.findings.reportMissing": "REPORT.md belum ditulis.",
|
|
129
|
+
"test.findings.neverStaged": "Folder ini menyimpan badan respons asli dari sistem asli. Folder ini tidak pernah di-stage, dan ORC tidak menyunting .gitignore Anda.",
|
|
130
|
+
|
|
131
|
+
"test.ui.title": "Penggerak front-end",
|
|
132
|
+
"test.ui.version": "Versi",
|
|
133
|
+
"test.ui.minVersion": "Versi terendah yang diterima jalur ini",
|
|
134
|
+
"test.ui.binary": "Program",
|
|
135
|
+
"test.ui.from": "Ditemukan di",
|
|
136
|
+
"test.ui.browsers": "Build peramban",
|
|
137
|
+
"test.ui.installNote": "ORC menyebut perintah ini dan tidak pernah menjalankannya. Ia tidak memasang apa pun ke proyek Anda.",
|
|
138
|
+
"test.ui.noAlternative": "Tidak ada cara menggerakkan peramban asli tanpa build peramban.",
|
|
139
|
+
"test.ui.off": "Bagian front-end mati. Itu pengaturan, bukan program yang hilang.",
|
|
140
|
+
"test.ui.fresh": "Dihitung baru pada setiap pembacaan, dan tidak pernah disimpan."
|
|
141
|
+
}
|
package/bin/webui/js/01-i18n.js
CHANGED
|
@@ -747,10 +747,15 @@ function challengeOpportunityCard(s, slug, body) {
|
|
|
747
747
|
}
|
|
748
748
|
|
|
749
749
|
/* A paid action is a COMMAND, never a button. This renders one, with the reason
|
|
750
|
-
it is not a button — making the boundary visible rather than hiding it.
|
|
751
|
-
|
|
750
|
+
it is not a button — making the boundary visible rather than hiding it.
|
|
751
|
+
|
|
752
|
+
`head` is optional and defaults to the Claude Code line every existing caller
|
|
753
|
+
wants. /orc-test needs the other one: `orc test run` and a Playwright install
|
|
754
|
+
are TERMINAL commands, and telling somebody to paste a shell command into
|
|
755
|
+
Claude Code is an instruction that does not work. */
|
|
756
|
+
function laneCommand(cmd, why, head) {
|
|
752
757
|
const box = el("div", "lane-cmd");
|
|
753
|
-
box.append(el("div", "lane-cmd-head", t("common.runInClaude")));
|
|
758
|
+
box.append(el("div", "lane-cmd-head", head || t("common.runInClaude")));
|
|
754
759
|
const row = el("div", "row-actions");
|
|
755
760
|
row.append(el("pre", "cmd", cmd));
|
|
756
761
|
const b = el("button", "btn btn-ghost btn-sm", t("common.copy"));
|
|
@@ -71,6 +71,16 @@ const FINDING_ROUTE = {
|
|
|
71
71
|
"statusline-layout-orphaned": { panel: "hookui", cta: "overview.item.statuslineOrphaned.cta" },
|
|
72
72
|
"statusline-layout-invalid": { panel: "hookui", cta: "overview.item.statuslineInvalid.cta" },
|
|
73
73
|
"statusline-layout-unreadable": { panel: "hookui", cta: "overview.item.statuslineUnreadable.cta" },
|
|
74
|
+
// v1.5.0. The rule again, and all four the same way: every command that
|
|
75
|
+
// clears one of these — `orc test env`, `orc test report`, `orc test
|
|
76
|
+
// security` — is on the TEST panel, beside the run it is about.
|
|
77
|
+
// `test-evidence-unstaged` goes there too even though the fix is a line in
|
|
78
|
+
// .gitignore that ORC will not write: Test is where the sentence explaining
|
|
79
|
+
// WHY that folder must never be staged already lives.
|
|
80
|
+
"test-env-unhealthy": { panel: "test", cta: "overview.item.testEnvUnhealthy.cta" },
|
|
81
|
+
"test-run-red": { panel: "test", cta: "overview.item.testRunRed.cta" },
|
|
82
|
+
"test-unchecked-owasp": { panel: "test", cta: "overview.item.testUncheckedOwasp.cta" },
|
|
83
|
+
"test-evidence-unstaged": { panel: "test", cta: "overview.item.testEvidenceUnstaged.cta" },
|
|
74
84
|
};
|
|
75
85
|
const DEFAULT_FINDING_ROUTE = { panel: "maintenance", cta: "overview.item.doctor.cta" };
|
|
76
86
|
const findingRoute = (id) => FINDING_ROUTE[id] || DEFAULT_FINDING_ROUTE;
|