@azure-id/orc 1.4.1 → 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 +3154 -2907
- package/README-id.md +39 -2
- package/README.md +647 -631
- package/bin/cli.js +42495 -36866
- 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 +1388 -1283
- package/bin/webui/app.html +9 -0
- package/bin/webui/css/04-motion.css +18 -0
- package/bin/webui/css/06-responsive.css +17 -1
- package/bin/webui/css/panels/hookui.css +220 -41
- 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/hookui.json +17 -3
- 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/en/tour.json +1 -1
- package/bin/webui/i18n/id/common.json +1 -0
- package/bin/webui/i18n/id/hookui.json +17 -3
- 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/i18n/id/tour.json +1 -1
- package/bin/webui/js/01-i18n.js +1 -0
- package/bin/webui/js/panels/challenge.js +8 -3
- package/bin/webui/js/panels/hookui.js +586 -208
- 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/hooks/README.md +8 -1
- package/templates/hooks/orc-statusline.js +15 -4
- package/templates/hooks/orc-subagent-line.js +5 -2
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"hookui.title": "CLI Hook Interface",
|
|
3
|
-
"hookui.sub": "Build the ORC status line. Three lines. Each line holds up to
|
|
3
|
+
"hookui.sub": "Build the ORC status line. Three lines. Each line holds up to six parts.",
|
|
4
4
|
"hookui.noData": "The status line cannot be read.",
|
|
5
5
|
"hookui.gate": "Status",
|
|
6
6
|
"hookui.on": "on",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
|
|
78
78
|
"hookui.unknownComponent": "This ORC version does not have this part.",
|
|
79
79
|
"hookui.shape": "Shape",
|
|
80
|
-
"hookui.shapeAbout": "How this part is drawn. Every option below is drawn with this part's real value, so you can see it before you choose. Picking one
|
|
80
|
+
"hookui.shapeAbout": "How this part is drawn. Every option below is drawn with this part's real value, so you can see it before you choose. Picking one marks it here and redraws the sample above; the window stays open.",
|
|
81
81
|
"hookui.shapeChange": "{id} shape = {r}",
|
|
82
82
|
"hookui.glyphs": "Symbols",
|
|
83
83
|
"hookui.glyphsAbout": "Which set of symbols the bars and marks are drawn from. Some terminals and fonts cannot draw all of them.",
|
|
@@ -176,5 +176,19 @@
|
|
|
176
176
|
"hookui.boardStatus": "The status line",
|
|
177
177
|
"hookui.boardSubagent": "One row per agent",
|
|
178
178
|
"hookui.boardStatusSub": "The two lines at the bottom of your terminal.",
|
|
179
|
-
"hookui.boardSubagentSub": "The row Claude Code draws for each subagent in the agent panel. One line, and it shows what that agent is running at and what it has cost so far."
|
|
179
|
+
"hookui.boardSubagentSub": "The row Claude Code draws for each subagent in the agent panel. One line, and it shows what that agent is running at and what it has cost so far.",
|
|
180
|
+
|
|
181
|
+
"hookui.previewStaleN": "One change is staged and is NOT in this picture. This window shows the layout that is saved on disk. Press Apply at the bottom of the page to write your change and redraw it.",
|
|
182
|
+
"hookui.previewStaleNPlural": "{n} changes are staged and are NOT in this picture. This window shows the layout that is saved on disk. Press Apply at the bottom of the page to write them and redraw it.",
|
|
183
|
+
"hookui.termTitle": "terminal, {n} cell wide",
|
|
184
|
+
"hookui.termTitlePlural": "terminal, {n} cells wide",
|
|
185
|
+
"hookui.compare": "See it in other setups",
|
|
186
|
+
"hookui.compareAbout": "The same bar under every colour set and every symbol set. It opens when you ask, because each row is a real render.",
|
|
187
|
+
"hookui.compareThemes": "Colour sets",
|
|
188
|
+
"hookui.compareGlyphs": "Symbol sets",
|
|
189
|
+
"hookui.editorLive": "The shape this part will take. It shows the shape only — never the words or the numbers it will carry when it runs.",
|
|
190
|
+
"hookui.editorStaged": "Nothing here is written until you press Apply at the bottom of the page. A dot next to a control name means the value is yours, not an inherited one.",
|
|
191
|
+
"hookui.shapeIgnores": "The shape you picked above does not use this. It is here so you can see what is set, and it is switched off because it would do nothing.",
|
|
192
|
+
"hookui.shapeIgnoresLabel": "The shape you picked above does not draw a name. These shapes do: {shapes}.",
|
|
193
|
+
"hookui.shapeDecides": "The shape decides which of the settings below do anything. Only these shapes draw a name: {shapes}. A bar, an icon or a bare value has no room for one, so the Name box is switched off for them."
|
|
180
194
|
}
|
|
@@ -78,6 +78,10 @@
|
|
|
78
78
|
"overview.item.pactBroken.cta": "Open Promises",
|
|
79
79
|
"overview.item.boundaryRefuse.cta": "Open Boundary",
|
|
80
80
|
"overview.item.docDrifted.cta": "Open Docs",
|
|
81
|
+
"overview.item.testEnvUnhealthy.cta": "Open Test",
|
|
82
|
+
"overview.item.testRunRed.cta": "Open Test",
|
|
83
|
+
"overview.item.testUncheckedOwasp.cta": "Open Test",
|
|
84
|
+
"overview.item.testEvidenceUnstaged.cta": "Open Test",
|
|
81
85
|
"overview.item.wikiDebt.cta": "Open Knowledge",
|
|
82
86
|
"overview.item.extraFindings.cta": "Open Extra",
|
|
83
87
|
"overview.item.legacyGlobalPackage.cta": "Open Maintenance",
|
|
@@ -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
|
+
}
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"tour.14.title": "Work that runs somewhere else",
|
|
32
32
|
"tour.14.text": "One line from nothing to a hundred: how hard a task scored. Every part of it shows where that work actually runs — Claude in blue, a provider you connected in green. A range you have not connected keeps its slot, so \"I left the hard work on Claude on purpose\" never looks like \"there is no hard work\". Nothing leaves this machine until you connect something, test it, and press Apply.",
|
|
33
33
|
"tour.15.title": "Build your own status line",
|
|
34
|
-
"tour.15.text": "Three lines, each holding up to
|
|
34
|
+
"tour.15.text": "Three lines, each holding up to six parts. Line 1 must have something before line 2 can. The preview at the top is exactly what your terminal will show — it is drawn by the same code the bar runs."
|
|
35
35
|
}
|
|
@@ -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"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"hookui.title": "Antarmuka CLI Hook",
|
|
3
|
-
"hookui.sub": "Bangun baris status ORC. Tiga baris. Tiap baris memuat sampai
|
|
3
|
+
"hookui.sub": "Bangun baris status ORC. Tiga baris. Tiap baris memuat sampai enam bagian.",
|
|
4
4
|
"hookui.noData": "Baris status tidak dapat dibaca.",
|
|
5
5
|
"hookui.gate": "Status",
|
|
6
6
|
"hookui.on": "hidup",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
|
|
78
78
|
"hookui.unknownComponent": "Versi ORC ini tidak memiliki bagian tersebut.",
|
|
79
79
|
"hookui.shape": "Bentuk",
|
|
80
|
-
"hookui.shapeAbout": "Bagaimana bagian ini digambar. Setiap pilihan di bawah digambar dengan nilai asli bagian ini, jadi Anda bisa melihatnya sebelum memilih. Memilih satu akan
|
|
80
|
+
"hookui.shapeAbout": "Bagaimana bagian ini digambar. Setiap pilihan di bawah digambar dengan nilai asli bagian ini, jadi Anda bisa melihatnya sebelum memilih. Memilih satu akan menandainya di sini dan menggambar ulang contoh di atas; jendela tetap terbuka.",
|
|
81
81
|
"hookui.shapeChange": "bentuk {id} = {r}",
|
|
82
82
|
"hookui.glyphs": "Simbol",
|
|
83
83
|
"hookui.glyphsAbout": "Dari kumpulan simbol mana batang dan tanda digambar. Sebagian terminal dan huruf tidak dapat menggambar semuanya.",
|
|
@@ -176,5 +176,19 @@
|
|
|
176
176
|
"hookui.boardStatus": "Baris status",
|
|
177
177
|
"hookui.boardSubagent": "Satu baris per agen",
|
|
178
178
|
"hookui.boardStatusSub": "Dua baris di bagian bawah terminal Anda.",
|
|
179
|
-
"hookui.boardSubagentSub": "Baris yang digambar Claude Code untuk setiap subagen di panel agen. Satu baris, dan ia menunjukkan agen itu berjalan pada apa dan sudah menghabiskan berapa."
|
|
179
|
+
"hookui.boardSubagentSub": "Baris yang digambar Claude Code untuk setiap subagen di panel agen. Satu baris, dan ia menunjukkan agen itu berjalan pada apa dan sudah menghabiskan berapa.",
|
|
180
|
+
|
|
181
|
+
"hookui.previewStaleN": "Satu perubahan sudah disiapkan dan BELUM ada di gambar ini. Jendela ini menampilkan tata letak yang tersimpan di disk. Tekan Terapkan di bagian bawah halaman untuk menuliskannya dan menggambar ulang.",
|
|
182
|
+
"hookui.previewStaleNPlural": "{n} perubahan sudah disiapkan dan BELUM ada di gambar ini. Jendela ini menampilkan tata letak yang tersimpan di disk. Tekan Terapkan di bagian bawah halaman untuk menuliskannya dan menggambar ulang.",
|
|
183
|
+
"hookui.termTitle": "terminal, lebar {n} sel",
|
|
184
|
+
"hookui.termTitlePlural": "terminal, lebar {n} sel",
|
|
185
|
+
"hookui.compare": "Lihat dalam pengaturan lain",
|
|
186
|
+
"hookui.compareAbout": "Bar yang sama di bawah setiap set warna dan setiap set simbol. Terbuka saat Anda meminta, karena setiap baris adalah render sungguhan.",
|
|
187
|
+
"hookui.compareThemes": "Set warna",
|
|
188
|
+
"hookui.compareGlyphs": "Set simbol",
|
|
189
|
+
"hookui.editorLive": "Bentuk yang akan diambil bagian ini. Hanya bentuknya — bukan kata atau angka yang akan dibawanya saat berjalan.",
|
|
190
|
+
"hookui.editorStaged": "Tidak ada yang ditulis di sini sampai Anda menekan Terapkan di bagian bawah halaman. Titik di samping nama kontrol berarti nilai itu milik Anda, bukan warisan.",
|
|
191
|
+
"hookui.shapeIgnores": "Bentuk yang Anda pilih di atas tidak memakai ini. Ini tetap ditampilkan agar Anda bisa melihat nilainya, dan dimatikan karena tidak akan berpengaruh.",
|
|
192
|
+
"hookui.shapeIgnoresLabel": "Bentuk yang Anda pilih di atas tidak menggambar nama. Bentuk berikut menggambarnya: {shapes}.",
|
|
193
|
+
"hookui.shapeDecides": "Bentuk menentukan pengaturan mana di bawah ini yang berpengaruh. Hanya bentuk berikut yang menggambar nama: {shapes}. Bar, ikon, atau nilai polos tidak punya ruang untuk itu, jadi kotak Nama dimatikan untuk mereka."
|
|
180
194
|
}
|
|
@@ -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
|
+
}
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"tour.14.title": "Pekerjaan yang berjalan di tempat lain",
|
|
32
32
|
"tour.14.text": "Satu garis dari nol sampai seratus: seberapa berat skor sebuah tugas. Setiap bagiannya menunjukkan di mana pekerjaan itu benar-benar berjalan — Claude berwarna biru, penyedia yang Anda hubungkan berwarna hijau. Rentang yang belum Anda hubungkan tetap punya tempatnya, jadi \"saya sengaja meninggalkan pekerjaan berat di Claude\" tidak pernah terlihat seperti \"tidak ada pekerjaan berat\". Tidak ada yang keluar dari mesin ini sampai Anda menghubungkan sesuatu, mengujinya, dan menekan Apply.",
|
|
33
33
|
"tour.15.title": "Bangun baris status Anda sendiri",
|
|
34
|
-
"tour.15.text": "Tiga baris, tiap baris memuat sampai
|
|
34
|
+
"tour.15.text": "Tiga baris, tiap baris memuat sampai enam bagian. Baris 1 harus terisi sebelum baris 2 bisa. Pratinjau di atas persis seperti yang akan tampil di terminal Anda - digambar oleh kode yang sama dengan yang dijalankan bilah itu."
|
|
35
35
|
}
|
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"));
|