@orkestrel/scaffold 0.0.107 → 0.0.109
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/dist/agents/skills/orkestrel-dispatch/scripts/bench.js +326 -91
- package/dist/agents/skills/orkestrel-dispatch/scripts/brief.js +110 -14
- package/dist/agents/skills/orkestrel-dispatch/scripts/chain.js +280 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/cite.js +188 -26
- package/dist/agents/skills/orkestrel-dispatch/scripts/launch.js +142 -43
- package/dist/agents/skills/orkestrel-dispatch/scripts/login.js +240 -62
- package/dist/agents/skills/orkestrel-dispatch/scripts/patch.js +323 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/result.js +169 -32
- package/dist/agents/skills/orkestrel-dispatch/scripts/sweep.js +368 -27
- package/dist/agents/skills/orkestrel-falsify/scripts/mutate.js +560 -0
- package/dist/agents/skills/orkestrel-harden/scripts/discovery.js +1052 -205
- package/dist/agents/skills/orkestrel-harden/scripts/measure.js +361 -0
- package/dist/agents/skills/orkestrel-harden/scripts/titles.js +455 -80
- package/dist/agents/skills/orkestrel-parallel/scripts/cases.js +327 -0
- package/dist/agents/skills/orkestrel-publish/scripts/compare.js +298 -51
- package/dist/agents/skills/orkestrel-publish/scripts/pins.js +170 -13
- package/dist/agents/skills/orkestrel-publish/scripts/swap.js +956 -191
- package/dist/agents/skills/orkestrel-publish/scripts/wave.js +707 -112
- package/dist/agents/skills/orkestrel-publish/scripts/window.js +235 -41
- package/dist/agents/skills/orkestrel-scout/scripts/map.js +341 -54
- package/dist/agents/templates/brief.md +1 -1
- package/dist/bin/main.js +51 -46
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +26 -20
- package/dist/host/agents/orchestration.md +98 -58
- package/dist/host/agents/platforms/posix.md +15 -0
- package/dist/host/agents/platforms/windows.md +37 -0
- package/dist/host/agents/skills/orkestrel-align/SKILL.md +10 -13
- package/dist/host/agents/skills/orkestrel-align/references/fleet.md +4 -10
- package/dist/host/agents/skills/orkestrel-align/references/integration.md +1 -1
- package/dist/host/agents/skills/orkestrel-build/SKILL.md +16 -48
- package/dist/host/agents/skills/orkestrel-build/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +19 -16
- package/dist/host/agents/skills/orkestrel-debrief/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +15 -28
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +5 -6
- package/dist/host/agents/skills/orkestrel-debrief/references/retention.md +12 -14
- package/dist/host/agents/skills/orkestrel-dispatch/SKILL.md +36 -24
- package/dist/host/agents/skills/orkestrel-dispatch/references/launch.md +14 -11
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/bench.ts +366 -75
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/brief.ts +126 -16
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/chain.ts +323 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/cite.ts +220 -31
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/launch.ts +176 -33
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/login.ts +294 -59
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/patch.ts +401 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/result.ts +199 -34
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/sweep.ts +428 -27
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +10 -8
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +1 -5
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +1 -1
- package/dist/host/agents/skills/orkestrel-falsify/scripts/mutate.ts +701 -0
- package/dist/host/agents/skills/orkestrel-harden/SKILL.md +16 -12
- package/dist/host/agents/skills/orkestrel-harden/references/bindings.md +23 -81
- package/dist/host/agents/skills/orkestrel-harden/references/centralization.md +4 -5
- package/dist/host/agents/skills/orkestrel-harden/references/contract.md +2 -0
- package/dist/host/agents/skills/orkestrel-harden/references/document.md +33 -0
- package/dist/host/agents/skills/orkestrel-harden/references/equivalence.md +6 -3
- package/dist/host/agents/skills/orkestrel-harden/references/hardening.md +8 -4
- package/dist/host/agents/skills/orkestrel-harden/references/research.md +2 -0
- package/dist/host/agents/skills/orkestrel-harden/scripts/discovery.ts +1272 -279
- package/dist/host/agents/skills/orkestrel-harden/scripts/measure.ts +425 -0
- package/dist/host/agents/skills/orkestrel-harden/scripts/titles.ts +603 -98
- package/dist/host/agents/skills/orkestrel-journey/SKILL.md +75 -98
- package/dist/host/agents/skills/orkestrel-journey/references/captures.md +54 -17
- package/dist/host/agents/skills/orkestrel-journey/references/decide.md +1 -20
- package/dist/host/agents/skills/orkestrel-journey/references/layer.md +21 -31
- package/dist/host/agents/skills/orkestrel-journey/references/styles.md +1 -1
- package/dist/host/agents/skills/orkestrel-parallel/SKILL.md +91 -30
- package/dist/host/agents/skills/orkestrel-parallel/agents/openai.yaml +2 -2
- package/dist/host/agents/skills/orkestrel-parallel/references/claude.md +34 -0
- package/dist/host/agents/skills/orkestrel-parallel/references/codex.md +29 -0
- package/dist/host/agents/skills/orkestrel-parallel/references/cursor.md +29 -0
- package/dist/host/agents/skills/orkestrel-parallel/references/t3.md +31 -0
- package/dist/host/agents/skills/orkestrel-parallel/scripts/cases.ts +389 -0
- package/dist/host/agents/skills/orkestrel-polish/SKILL.md +16 -20
- package/dist/host/agents/skills/orkestrel-polish/references/capture-harness.md +16 -26
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +12 -26
- package/dist/host/agents/skills/orkestrel-publish/agents/openai.yaml +2 -2
- package/dist/host/agents/skills/orkestrel-publish/references/adopt.md +23 -0
- package/dist/host/agents/skills/orkestrel-publish/references/release.md +4 -4
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +12 -10
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +20 -25
- package/dist/host/agents/skills/orkestrel-publish/scripts/compare.ts +348 -59
- package/dist/host/agents/skills/orkestrel-publish/scripts/pins.ts +202 -22
- package/dist/host/agents/skills/orkestrel-publish/scripts/swap.ts +1061 -191
- package/dist/host/agents/skills/orkestrel-publish/scripts/wave.ts +812 -140
- package/dist/host/agents/skills/orkestrel-publish/scripts/window.ts +280 -38
- package/dist/host/agents/skills/orkestrel-scout/SKILL.md +3 -3
- package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +428 -70
- package/dist/host/agents/templates/brief.md +1 -1
- package/dist/host/agents/transports/claude-cli.md +3 -3
- package/dist/host/agents/transports/codex.md +3 -8
- package/dist/host/agents/transports/cursor.md +2 -3
- package/dist/host/claude/AGENTS.md +7 -10
- package/dist/host/claude/agents/analyst.md +3 -3
- package/dist/host/claude/agents/astra.md +3 -3
- package/dist/host/claude/agents/builder.md +1 -1
- package/dist/host/claude/agents/checker.md +1 -1
- package/dist/host/claude/agents/distiller.md +1 -1
- package/dist/host/claude/agents/grok.md +1 -1
- package/dist/host/claude/agents/opus.md +2 -2
- package/dist/host/claude/agents/orkestrel.md +57 -90
- package/dist/host/claude/agents/researcher.md +1 -1
- package/dist/host/claude/agents/reviewer.md +4 -0
- package/dist/host/claude/agents/scout.md +1 -1
- package/dist/host/claude/agents/verifier.md +1 -1
- package/dist/host/claude/rules/application.md +14 -21
- package/dist/host/claude/rules/architecture.md +34 -44
- package/dist/host/claude/rules/browser.md +3 -4
- package/dist/host/claude/rules/campaign.md +55 -0
- package/dist/host/claude/rules/documentation.md +26 -11
- package/dist/host/claude/rules/names.md +9 -4
- package/dist/host/claude/rules/patterns.md +6 -7
- package/dist/host/claude/rules/portability.md +2 -3
- package/dist/host/claude/rules/quality.md +4 -5
- package/dist/host/claude/rules/styles.md +2 -2
- package/dist/host/claude/rules/tests.md +57 -114
- package/dist/host/claude/rules/typescript.md +8 -10
- package/dist/host/claude/rules/workspace.md +21 -19
- package/dist/host/claude/rules/writing.md +3 -3
- package/dist/host/claude/skills/orkestrel-dispatch/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-harden/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-parallel/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-publish/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-scout/SKILL.md +1 -1
- package/dist/host/codex/agents/analyst.toml +9 -3
- package/dist/host/codex/agents/astra.toml +3 -4
- package/dist/host/codex/agents/builder.toml +1 -1
- package/dist/host/codex/agents/opus.toml +3 -4
- package/dist/host/codex/agents/orkestrel.toml +1 -1
- package/dist/host/codex/agents/researcher.toml +2 -2
- package/dist/host/codex/agents/verifier.toml +1 -1
- package/dist/host/codex/config.toml +3 -3
- package/dist/host/configs/helpers.ts +21 -1
- package/dist/host/configs/policy.ts +405 -16
- package/dist/host/cursor/rules/orchestration.mdc +1 -0
- package/dist/host/dotfiles/oxlintrc.json +141 -5
- package/dist/host/guides/agent.md +111 -134
- package/dist/host/guides/capture.md +801 -0
- package/dist/host/guides/probe.md +27 -8
- package/dist/host/guides/scaffold.md +152 -19
- package/dist/host/guides/study.md +534 -440
- package/dist/host/guides/test.md +111 -44
- package/dist/host/manifest.json +199 -242
- package/dist/host/tests/config.test.ts +1558 -219
- package/dist/host/tests/policy.test.ts +127 -1
- package/dist/host/tests/setupPolicy.ts +1389 -39
- package/dist/src/core/index.cjs +239 -87
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +123 -39
- package/dist/src/core/index.d.ts +123 -39
- package/dist/src/core/index.js +234 -86
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +20 -27
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.js +21 -28
- package/dist/src/server/index.js.map +1 -1
- package/package.json +11 -11
- package/dist/agents/skills/orkestrel-dispatch/scripts/helpers.js +0 -283
- package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +0 -25
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/helpers.ts +0 -333
- package/dist/host/agents/skills/orkestrel-parallel/references/harnesses.md +0 -19
- package/dist/host/guides/supervisor.md +0 -4890
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync, rmSync } from 'node:fs'
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
|
|
2
2
|
import { join } from 'node:path'
|
|
3
3
|
import { describe, expect, it } from 'vitest'
|
|
4
4
|
import { POLICY_BANNED_TERMS, POLICY_JUDGED_TERMS } from '../configs/policy.js'
|
|
@@ -15,6 +15,9 @@ import {
|
|
|
15
15
|
inspectPolicyMirrorPaths,
|
|
16
16
|
inspectPolicyMirrors,
|
|
17
17
|
inspectPolicyPortability,
|
|
18
|
+
inspectPolicyShellPaths,
|
|
19
|
+
inspectPolicyShells,
|
|
20
|
+
inspectPolicyText,
|
|
18
21
|
inspectPolicyWiring,
|
|
19
22
|
inspectPolicyWorkspace,
|
|
20
23
|
inspectSkillFamily,
|
|
@@ -56,6 +59,7 @@ import {
|
|
|
56
59
|
SKILL_POLICY_PARAGRAPHS,
|
|
57
60
|
SKILL_POLICY_TEXT,
|
|
58
61
|
stemToPolicyCandidates,
|
|
62
|
+
TEXT_POLICY_CONTROLS,
|
|
59
63
|
testToPolicyStem,
|
|
60
64
|
} from './setupPolicy.js'
|
|
61
65
|
|
|
@@ -712,6 +716,105 @@ describe('portability policy', () => {
|
|
|
712
716
|
]),
|
|
713
717
|
).toEqual([])
|
|
714
718
|
})
|
|
719
|
+
|
|
720
|
+
it('rejects a shell-family file outside scripts whatever its case, and a non-shell file inside it', () => {
|
|
721
|
+
expect(
|
|
722
|
+
inspectPolicyShellPaths([
|
|
723
|
+
'src/run.sh',
|
|
724
|
+
'tools/BUILD.PY',
|
|
725
|
+
'scripts/probe.ts',
|
|
726
|
+
'scripts/a/b.cmd',
|
|
727
|
+
]),
|
|
728
|
+
).toEqual([
|
|
729
|
+
{
|
|
730
|
+
rule: 'portability',
|
|
731
|
+
path: 'src/run.sh',
|
|
732
|
+
message: 'shell, PowerShell, Python, and batch files sit only in scripts',
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
rule: 'portability',
|
|
736
|
+
path: 'tools/BUILD.PY',
|
|
737
|
+
message: 'shell, PowerShell, Python, and batch files sit only in scripts',
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
rule: 'portability',
|
|
741
|
+
path: 'scripts/probe.ts',
|
|
742
|
+
message: 'scripts holds .sh files and nothing else',
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
rule: 'portability',
|
|
746
|
+
path: 'scripts/a/b.cmd',
|
|
747
|
+
message: 'scripts holds .sh files and nothing else',
|
|
748
|
+
},
|
|
749
|
+
])
|
|
750
|
+
})
|
|
751
|
+
|
|
752
|
+
it('accepts a shell file at any depth inside scripts and every other file elsewhere', () => {
|
|
753
|
+
expect(
|
|
754
|
+
inspectPolicyShellPaths([
|
|
755
|
+
'scripts/deps.sh',
|
|
756
|
+
'scripts/DEPS.SH',
|
|
757
|
+
'scripts/nested/hook.sh',
|
|
758
|
+
'src/worker/helpers.ts',
|
|
759
|
+
'package.json',
|
|
760
|
+
'.gitattributes',
|
|
761
|
+
'build.shared.ts',
|
|
762
|
+
]),
|
|
763
|
+
).toEqual([])
|
|
764
|
+
})
|
|
765
|
+
|
|
766
|
+
it('reads files only: a directory named like a shell file or inside scripts is no violation', () => {
|
|
767
|
+
const scratch = createPolicyScratch({ prefix: 'orkestrel-policy-shells-' })
|
|
768
|
+
try {
|
|
769
|
+
scratch.write('src/tools.py/index.ts', 'export {}\n')
|
|
770
|
+
scratch.write('scripts/nested/deps.sh', '#!/usr/bin/env bash\n')
|
|
771
|
+
scratch.write('src/run.sh', '#!/usr/bin/env bash\n')
|
|
772
|
+
// The refused file arrives beside the directories, so an empty result elsewhere is a read
|
|
773
|
+
// that reached the population rather than one that found nothing.
|
|
774
|
+
expect(inspectPolicyShells(scratch.path)).toEqual([
|
|
775
|
+
{
|
|
776
|
+
rule: 'portability',
|
|
777
|
+
path: 'src/run.sh',
|
|
778
|
+
message: 'shell, PowerShell, Python, and batch files sit only in scripts',
|
|
779
|
+
},
|
|
780
|
+
])
|
|
781
|
+
} finally {
|
|
782
|
+
scratch.destroy()
|
|
783
|
+
}
|
|
784
|
+
})
|
|
785
|
+
})
|
|
786
|
+
|
|
787
|
+
describe('text integrity policy', () => {
|
|
788
|
+
for (const control of TEXT_POLICY_CONTROLS) {
|
|
789
|
+
it(`${control.label} [membership: ${control.membership}]`, () => {
|
|
790
|
+
expect(
|
|
791
|
+
inspectPolicyControl(control).filter((violation) => violation.rule === 'text'),
|
|
792
|
+
).toEqual(control.violations)
|
|
793
|
+
})
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
// A text fixture is a JavaScript string and cannot hold a byte sequence UTF-8 never carries, so
|
|
797
|
+
// the bytes are written directly. The valid file beside the broken one proves the sweep ran
|
|
798
|
+
// over the workspace and refused one file rather than every file.
|
|
799
|
+
it('rejects a file whose bytes are not UTF-8 and accepts the same file once they are', () => {
|
|
800
|
+
const scratch = createPolicyScratch({ prefix: 'orkestrel-policy-text-' })
|
|
801
|
+
try {
|
|
802
|
+
mkdirSync(join(scratch.path, 'src'), { recursive: true })
|
|
803
|
+
writeFileSync(join(scratch.path, 'src', 'valid.ts'), Uint8Array.of(0x61, 0xc3, 0xa8, 0x0a))
|
|
804
|
+
writeFileSync(join(scratch.path, 'src', 'broken.ts'), Uint8Array.of(0x61, 0xc3, 0x28, 0x0a))
|
|
805
|
+
expect(inspectPolicyText(scratch.path)).toEqual([
|
|
806
|
+
{ rule: 'text', path: 'src/broken.ts', message: 'text decodes as UTF-8' },
|
|
807
|
+
])
|
|
808
|
+
writeFileSync(join(scratch.path, 'src', 'broken.ts'), Uint8Array.of(0x61, 0xc3, 0xa8, 0x0a))
|
|
809
|
+
expect(inspectPolicyText(scratch.path)).toEqual([])
|
|
810
|
+
} finally {
|
|
811
|
+
scratch.destroy()
|
|
812
|
+
}
|
|
813
|
+
})
|
|
814
|
+
|
|
815
|
+
it('holds the authored and source text of this workspace to clean UTF-8', () => {
|
|
816
|
+
expect(inspectPolicyText(process.cwd())).toEqual([])
|
|
817
|
+
})
|
|
715
818
|
})
|
|
716
819
|
|
|
717
820
|
describe('prose policy', () => {
|
|
@@ -893,6 +996,29 @@ describe('policy configuration wiring', () => {
|
|
|
893
996
|
])
|
|
894
997
|
})
|
|
895
998
|
|
|
999
|
+
it('counts a rule as enabled only at error severity, in the string or an array first member', () => {
|
|
1000
|
+
const configuration = {
|
|
1001
|
+
rules: { 'rule/top-off': 'off', 'rule/top-warn': ['warn'], 'rule/top-error': 'error' },
|
|
1002
|
+
overrides: [
|
|
1003
|
+
{
|
|
1004
|
+
files: ['a/**'],
|
|
1005
|
+
rules: { 'rule/scoped-off': 'off', 'rule/scoped-error': ['error', {}] },
|
|
1006
|
+
},
|
|
1007
|
+
],
|
|
1008
|
+
}
|
|
1009
|
+
expect(
|
|
1010
|
+
inspectPolicyWiring(
|
|
1011
|
+
configuration,
|
|
1012
|
+
['rule/top-off', 'rule/top-warn', 'rule/top-error', 'rule/scoped-off', 'rule/scoped-error'],
|
|
1013
|
+
[],
|
|
1014
|
+
),
|
|
1015
|
+
).toEqual(
|
|
1016
|
+
['rule/top-off', 'rule/top-warn', 'rule/scoped-off'].map(
|
|
1017
|
+
(rule) => `${rule} is enabled by no top-level or override rules record`,
|
|
1018
|
+
),
|
|
1019
|
+
)
|
|
1020
|
+
})
|
|
1021
|
+
|
|
896
1022
|
it('reports a configuration that is not a record', () => {
|
|
897
1023
|
expect(inspectPolicyWiring([], [], [])).toEqual(['Oxlint configuration must be a record'])
|
|
898
1024
|
})
|