@codyswann/lisa 2.329.0 → 2.330.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/all/copy-overwrite/scripts/lisa-enforcement-fallback.sh +4 -2
  2. package/all/copy-overwrite/scripts/lisa-hooks/block-instruction-file-edits.sh +142 -0
  3. package/all/merge/.claude/settings.json +9 -0
  4. package/dist/cli/index.d.ts.map +1 -1
  5. package/dist/cli/index.js +3 -15
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/cli/standards-proof-cmd.d.ts +22 -0
  8. package/dist/cli/standards-proof-cmd.d.ts.map +1 -1
  9. package/dist/cli/standards-proof-cmd.js +18 -0
  10. package/dist/cli/standards-proof-cmd.js.map +1 -1
  11. package/dist/cli/workstation-cmd.d.ts +91 -0
  12. package/dist/cli/workstation-cmd.d.ts.map +1 -0
  13. package/dist/cli/workstation-cmd.js +127 -0
  14. package/dist/cli/workstation-cmd.js.map +1 -0
  15. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  16. package/dist/core/upstream-evidence-manifest.js +25 -8
  17. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  18. package/dist/opencode/hooks-installer.d.ts.map +1 -1
  19. package/dist/opencode/hooks-installer.js +1 -41
  20. package/dist/opencode/hooks-installer.js.map +1 -1
  21. package/dist/opencode/plugin-catalog.d.ts +25 -0
  22. package/dist/opencode/plugin-catalog.d.ts.map +1 -0
  23. package/dist/opencode/plugin-catalog.js +47 -0
  24. package/dist/opencode/plugin-catalog.js.map +1 -0
  25. package/dist/opencode/plugin-templates/lisa-block-instruction-file-edits.ts +72 -0
  26. package/package.json +1 -1
  27. package/plugins/lisa/.claude-plugin/plugin.json +14 -1
  28. package/plugins/lisa/.codex-plugin/hooks.json +13 -0
  29. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  30. package/plugins/lisa/.codex-plugin/skills/lisa-setup-workstation/SKILL.md +27 -6
  31. package/plugins/lisa/commands/setup/workstation.md +2 -0
  32. package/plugins/lisa/hooks/block-instruction-file-edits.agy.sh +58 -0
  33. package/plugins/lisa/hooks/block-instruction-file-edits.sh +142 -0
  34. package/plugins/lisa/skills/lisa-setup-workstation/SKILL.md +27 -6
  35. package/plugins/lisa-agy/commands/lisa/setup/workstation.md +2 -0
  36. package/plugins/lisa-agy/hooks/block-instruction-file-edits.agy.sh +58 -0
  37. package/plugins/lisa-agy/hooks/block-instruction-file-edits.sh +142 -0
  38. package/plugins/lisa-agy/hooks.json +13 -0
  39. package/plugins/lisa-agy/plugin.json +1 -1
  40. package/plugins/lisa-agy/skills/lisa-setup-workstation/SKILL.md +27 -6
  41. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  44. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-copilot/.claude-plugin/plugin.json +14 -1
  47. package/plugins/lisa-copilot/commands/lisa/setup/workstation.md +2 -0
  48. package/plugins/lisa-copilot/hooks/block-instruction-file-edits.sh +142 -0
  49. package/plugins/lisa-copilot/skills/lisa-setup-workstation/SKILL.md +27 -6
  50. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-cursor/commands/lisa/setup/workstation.md +2 -0
  52. package/plugins/lisa-cursor/hooks/block-instruction-file-edits.sh +142 -0
  53. package/plugins/lisa-cursor/hooks/hooks.json +8 -0
  54. package/plugins/lisa-cursor/skills/lisa-setup-workstation/SKILL.md +27 -6
  55. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-expo-agy/plugin.json +1 -1
  58. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  62. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  63. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  67. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  68. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  72. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  73. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  77. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  78. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  82. package/plugins/lisa-rails-agy/plugin.json +1 -1
  83. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  87. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  88. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  92. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  93. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  95. package/plugins/src/base/.claude-plugin/plugin.json +13 -0
  96. package/plugins/src/base/commands/setup/workstation.md +2 -0
  97. package/plugins/src/base/hooks/block-instruction-file-edits.agy.sh +58 -0
  98. package/plugins/src/base/hooks/block-instruction-file-edits.sh +142 -0
  99. package/plugins/src/base/skills/lisa-setup-workstation/SKILL.md +27 -6
  100. package/scripts/build-plugins.sh +2 -1
  101. package/scripts/generate-agy-plugin-artifacts.mjs +11 -0
  102. package/scripts/lib/per-agent-hook-filter.mjs +10 -0
  103. package/scripts/lisa-enforcement-fallback.sh +4 -2
@@ -4,7 +4,8 @@
4
4
  # is not installed.
5
5
  #
6
6
  # Every PreToolUse guard — block-no-verify, parity-safety-net,
7
- # block-shell-json-parsing — is declared in the Lisa plugin. A cloud session
7
+ # block-shell-json-parsing, block-instruction-file-edits — is declared in the
8
+ # Lisa plugin. A cloud session
8
9
  # installs plugins at session start from the marketplace the repository
9
10
  # declares, and when that does not happen the container runs with
10
11
  # `installed_plugins.json` empty and no enforcement whatsoever.
@@ -41,7 +42,8 @@ fi
41
42
  # host project whose plugin install fails has exactly the same hole and no
42
43
  # `plugins/` directory to fall back on.
43
44
  status=0
44
- for guard in block-no-verify parity-safety-net block-shell-json-parsing; do
45
+ for guard in block-no-verify parity-safety-net block-shell-json-parsing \
46
+ block-instruction-file-edits; do
45
47
  script=""
46
48
  for candidate in \
47
49
  "$repo_root/scripts/lisa-hooks/$guard.sh" \
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env bash
2
+ # PreToolUse hook: refuse agent writes to the session-instruction files.
3
+ #
4
+ # `AGENTS.md`, `CLAUDE.md`, and `.github/copilot-instructions.md` are the files
5
+ # every agent loads at session start. They are human-authored and curated on
6
+ # purpose — Lisa's own contract says so in two places:
7
+ # - plugins/src/base/rules/reference/project-learnings.md
8
+ # - plugins/src/base/skills/lisa-debrief-apply/SKILL.md ("CLAUDE.md is
9
+ # human-authored ... apply never writes to any of the three")
10
+ #
11
+ # Nothing enforced it, so agents appended their own findings anyway: one fleet
12
+ # repo reached 949 lines of ticket-keyed trap dumps in `AGENTS.md` while its
13
+ # learnings ledger held 22. Every one of those lines is charged to the context
14
+ # of every later session in that project, forever. Prose did not hold; this is
15
+ # the executable control that does.
16
+ #
17
+ # Blocked signatures:
18
+ # 1. Write / Edit / MultiEdit / NotebookEdit whose target basename is one of
19
+ # the instruction files;
20
+ # 2. Bash output redirection (`>`, `>>`), `tee`, or `sed -i` aimed at one.
21
+ # Reads (`cat AGENTS.md`, `rg pattern AGENTS.md`) never fire.
22
+ #
23
+ # Exemptions (allowed):
24
+ # - `LISA_ALLOW_INSTRUCTION_FILE_WRITE` set — the operator's explicit override,
25
+ # named in the refusal so a human who really wants the edit can take it;
26
+ # - payloads carrying a `<!-- LISA_` marker: Lisa's own marker-bounded regions
27
+ # (the agy project-learnings bridge, cross-pollinate's rule section) replace
28
+ # in place on re-run and cannot grow the file;
29
+ # - paths under `node_modules/` or `dist/` — vendored copies, not the host's.
30
+ set -euo pipefail
31
+
32
+ input="$(cat)"
33
+
34
+ command -v jq >/dev/null 2>&1 || exit 0
35
+
36
+ # The operator's override. Checked before anything else so it is always the
37
+ # cheapest way out of a refusal a human deliberately wants to overrule.
38
+ if [ -n "${LISA_ALLOW_INSTRUCTION_FILE_WRITE:-}" ]; then
39
+ exit 0
40
+ fi
41
+
42
+ tool_name="$(printf '%s' "$input" | jq -r '.tool_name // empty')"
43
+ [ -n "$tool_name" ] || exit 0
44
+
45
+ # Lisa's own bounded bridges write marked regions. A payload carrying a marker
46
+ # is replacing a delimited block, not appending prose, so it cannot be the
47
+ # unbounded growth this guard exists to stop.
48
+ if printf '%s' "$input" | grep -q '<!-- LISA_'; then
49
+ exit 0
50
+ fi
51
+
52
+ # Basename match, case-insensitively: `agents.md` and `AGENTS.md` are the same
53
+ # file on the macOS checkouts this fleet runs on.
54
+ is_instruction_file() {
55
+ local candidate="$1"
56
+ case "$candidate" in
57
+ */node_modules/* | node_modules/* | */dist/* | dist/*) return 1 ;;
58
+ esac
59
+ local base="${candidate##*/}"
60
+ case "$(printf '%s' "$base" | tr '[:upper:]' '[:lower:]')" in
61
+ agents.md | claude.md | copilot-instructions.md) return 0 ;;
62
+ esac
63
+ return 1
64
+ }
65
+
66
+ refuse() {
67
+ local target="$1"
68
+ cat >&2 <<EOF
69
+ BLOCKED: refusing to write \`$target\`.
70
+
71
+ WHY: this is a session-instruction file, not a place to record what you just
72
+ learned. Every line in it is loaded into the context of every agent, in every
73
+ future session, in this project, forever. It is human-curated on purpose. An
74
+ agent appending its own findings is how these files grow into hundreds of lines
75
+ of stale, ticket-specific trivia that every later session pays for and half of
76
+ which was only ever true once.
77
+
78
+ WHERE IT GOES INSTEAD — take the first one that fits:
79
+
80
+ 1. Every agent genuinely needs this in every session, and only in this project.
81
+ That is a project rule — but do not write it yourself. Capture it with
82
+ \`/lisa:persist-learning\` so it lands in the learnings ledger with provenance
83
+ and a confidence score. The gardener (\`/lisa:learnings:audit\`) then proposes
84
+ promotion into \`.claude/rules/PROJECT_RULES.md\` as a human-gated ticket.
85
+
86
+ 2. It changes how an existing skill should behave. Edit that skill's SKILL.md.
87
+ Knowledge belongs next to the procedure it modifies, not in a global preamble.
88
+
89
+ 3. It is true beyond this project. Propose it upstream to Lisa via
90
+ \`/lisa:cross-pollinate\`, or open an issue on CodySwannGT/lisa. A local copy of
91
+ a general rule silently drifts the moment upstream changes.
92
+
93
+ 4. None of the above — it is background someone may want to look up, not a
94
+ standing instruction. Write it into the project documentation (\`wiki/\` or
95
+ \`docs/\`).
96
+
97
+ If a human explicitly asked for this edit, they can re-run with
98
+ \`LISA_ALLOW_INSTRUCTION_FILE_WRITE=1\` set, which bypasses this guard.
99
+ EOF
100
+ exit 2
101
+ }
102
+
103
+ case "$tool_name" in
104
+ Write | Edit | MultiEdit | NotebookEdit | Update)
105
+ # `file_path` covers Write/Edit; `edits[].file_path` covers the MultiEdit
106
+ # shapes that carry a path per edit; `notebook_path` covers NotebookEdit.
107
+ paths="$(printf '%s' "$input" | jq -r '
108
+ [ .tool_input.file_path?,
109
+ .tool_input.path?,
110
+ .tool_input.notebook_path?,
111
+ (.tool_input.edits? // [] | .[].file_path?)
112
+ ] | map(select(. != null and . != "")) | .[]' 2>/dev/null || true)"
113
+ while IFS= read -r candidate; do
114
+ [ -n "$candidate" ] || continue
115
+ if is_instruction_file "$candidate"; then
116
+ refuse "$candidate"
117
+ fi
118
+ done <<EOF
119
+ $paths
120
+ EOF
121
+ ;;
122
+ Bash)
123
+ command_str="$(printf '%s' "$input" | jq -r '.tool_input.command // empty')"
124
+ [ -n "$command_str" ] || exit 0
125
+ # Fast path: no instruction filename mentioned means nothing to classify.
126
+ if ! printf '%s' "$command_str" |
127
+ grep -Eqi '(agents|claude|copilot-instructions)\.md'; then
128
+ exit 0
129
+ fi
130
+ # Write signatures only. A bare mention (`cat AGENTS.md`, `rg x AGENTS.md`)
131
+ # is a read and must stay allowed — the filename has to appear as the target
132
+ # of a redirection, a tee, or an in-place sed.
133
+ write_target='[^ |;&]*(agents|claude|copilot-instructions)\.md'
134
+ if printf '%s' "$command_str" |
135
+ grep -Eqi ">>?[[:space:]]*['\"]?$write_target|tee([[:space:]]+-[a-z]+)*[[:space:]]+['\"]?$write_target|sed[[:space:]]+[^|;&]*-i[^|;&]*$write_target"; then
136
+ refuse "$(printf '%s' "$command_str" |
137
+ grep -Eoi "$write_target" | head -1)"
138
+ fi
139
+ ;;
140
+ esac
141
+
142
+ exit 0
@@ -48,6 +48,15 @@
48
48
  "command": "bash \"$CLAUDE_PROJECT_DIR\"/scripts/lisa-enforcement-fallback.sh"
49
49
  }
50
50
  ]
51
+ },
52
+ {
53
+ "matcher": "Write|Edit|MultiEdit",
54
+ "hooks": [
55
+ {
56
+ "type": "command",
57
+ "command": "bash \"$CLAUDE_PROJECT_DIR\"/scripts/lisa-enforcement-fallback.sh"
58
+ }
59
+ ]
51
60
  }
52
61
  ]
53
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAEL,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,wCAAwC;IACxC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,qCAAqC;IACrC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,iEAAiE;IACjE,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,sEAAsE;IACtE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,uDAAuD;IACvD,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,qEAAqE;IACrE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,iEAAiE;IACjE,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,4EAA4E;IAC5E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gFAAgF;IAChF,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AAyOD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CAgET;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAEL,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,wCAAwC;IACxC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,qCAAqC;IACrC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,iEAAiE;IACjE,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,sEAAsE;IACtE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,uDAAuD;IACvD,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,qEAAqE;IACrE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,iEAAiE;IACjE,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,4EAA4E;IAC5E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gFAAgF;IAChF,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AAsND;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CAgET;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
package/dist/cli/index.js CHANGED
@@ -12,13 +12,14 @@ import { DEFAULT_SETUP_PROJECT_DEPENDENCIES, runSetupProject, } from "./setup-pr
12
12
  import { runSetupWiki } from "./setup-wiki.js";
13
13
  import { addSharedOptions } from "./shared-options.js";
14
14
  import { SETUP_TYPES } from "./starters.js";
15
- import { runStandardsProofCli } from "./standards-proof-cmd.js";
15
+ import { addStandardsProofCommand, runStandardsProofCli, } from "./standards-proof-cmd.js";
16
16
  import { runSync } from "./sync-cmd.js";
17
17
  import { runUi } from "./ui-cmd.js";
18
18
  import { runUpdate } from "./update-cmd.js";
19
19
  import { runUpdateCheck } from "./update-check.js";
20
20
  import { addUpdateCheckHook } from "./update-check-hook.js";
21
21
  import { runVersion } from "./version-cmd.js";
22
+ import { addWorkstationCommand } from "./workstation-cmd.js";
22
23
  import { getPackageVersion } from "./version.js";
23
24
  const DEFAULT_DEPENDENCIES = {
24
25
  runApply,
@@ -117,20 +118,6 @@ function addHealthCommand(program, deps) {
117
118
  await deps.runHealthCli(targetPath, options);
118
119
  });
119
120
  }
120
- /**
121
- * Register the explicit, mutating standards proof command.
122
- * @param program - Commander program to mutate
123
- * @param deps - Program dependencies
124
- */
125
- function addStandardsProofCommand(program, deps) {
126
- program
127
- .command("standards-proof")
128
- .description("Run all applicable Lisa standards checks and prove the current Git artifact")
129
- .argument("[path]", PATH_ARG_DESCRIPTION)
130
- .action(async (targetPath) => {
131
- await deps.runStandardsProofCli(targetPath);
132
- });
133
- }
134
121
  /**
135
122
  * Register CLI maintenance commands that do not run the root update warning.
136
123
  * @param program - Commander program to mutate
@@ -154,6 +141,7 @@ function addMaintenanceCommands(program, deps) {
154
141
  process.exitCode = code;
155
142
  }
156
143
  });
144
+ addWorkstationCommand(program);
157
145
  addDoctorCommand(program, deps);
158
146
  addHealthCommand(program, deps);
159
147
  addStandardsProofCommand(program, deps);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,29 @@
1
+ import type { Command } from "commander";
1
2
  /**
2
3
  * Run every applicable standards command and publish a current proof.
3
4
  * @param projectPath - Optional project path
4
5
  * @param cwd - Injectable process working directory
5
6
  */
6
7
  export declare function runStandardsProofCli(projectPath: string | undefined, cwd?: string): Promise<void>;
8
+ /**
9
+ * The only dependency this registration needs, structurally.
10
+ *
11
+ * Declared here rather than importing `ProgramDependencies` from the program
12
+ * module, which would import this one back.
13
+ */
14
+ interface StandardsProofCommandDeps {
15
+ /** Runs every standards command and writes freshness-bound proof. */
16
+ readonly runStandardsProofCli: typeof runStandardsProofCli;
17
+ }
18
+ /**
19
+ * Register the explicit, mutating standards proof command.
20
+ *
21
+ * Lives beside its command rather than in the program module, matching
22
+ * `addGateCommands` — registration is part of the command, and keeping it here
23
+ * is what stops the program file growing without bound.
24
+ * @param program Commander program to mutate.
25
+ * @param deps Program dependencies.
26
+ */
27
+ export declare function addStandardsProofCommand(program: Command, deps: StandardsProofCommandDeps): void;
28
+ export {};
7
29
  //# sourceMappingURL=standards-proof-cmd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-proof-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/standards-proof-cmd.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAMf"}
1
+ {"version":3,"file":"standards-proof-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/standards-proof-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;GAKG;AACH,UAAU,yBAAyB;IACjC,qEAAqE;IACrE,QAAQ,CAAC,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;CAC5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,yBAAyB,GAC9B,IAAI,CAUN"}
@@ -11,4 +11,22 @@ export async function runStandardsProofCli(projectPath, cwd = process.cwd()) {
11
11
  const proof = await captureStandardsProof(root);
12
12
  process.stdout.write(`standards-proof: PASS ${proof.repository.identity}@${proof.repository.head} (${proof.results.length} checks)\n`);
13
13
  }
14
+ /**
15
+ * Register the explicit, mutating standards proof command.
16
+ *
17
+ * Lives beside its command rather than in the program module, matching
18
+ * `addGateCommands` — registration is part of the command, and keeping it here
19
+ * is what stops the program file growing without bound.
20
+ * @param program Commander program to mutate.
21
+ * @param deps Program dependencies.
22
+ */
23
+ export function addStandardsProofCommand(program, deps) {
24
+ program
25
+ .command("standards-proof")
26
+ .description("Run all applicable Lisa standards checks and prove the current Git artifact")
27
+ .argument("[path]", "Project path (default: current directory)")
28
+ .action(async (targetPath) => {
29
+ await deps.runStandardsProofCli(targetPath);
30
+ });
31
+ }
14
32
  //# sourceMappingURL=standards-proof-cmd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-proof-cmd.js","sourceRoot":"","sources":["../../src/cli/standards-proof-cmd.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAA+B,EAC/B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,KAAK,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,YAAY,CACjH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"standards-proof-cmd.js","sourceRoot":"","sources":["../../src/cli/standards-proof-cmd.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAA+B,EAC/B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,KAAK,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,YAAY,CACjH,CAAC;AACJ,CAAC;AAaD;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAgB,EAChB,IAA+B;IAE/B,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CACV,6EAA6E,CAC9E;SACA,QAAQ,CAAC,QAAQ,EAAE,2CAA2C,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,EAAE;QAC/C,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * CLI entry point for the workstation bootstrap.
3
+ *
4
+ * `lisa-setup-workstation` exists to prepare a machine that has no coding agent
5
+ * and no checkout. As a skill it could only be reached by typing a slash command
6
+ * into an agent — and Lisa ships as a devDependency, so it does not exist until
7
+ * a repo is cloned and its dependencies installed.
8
+ *
9
+ * Both of those are precisely the state the skill is supposed to CREATE. The
10
+ * bootstrap was unreachable in the one scenario it was designed for.
11
+ *
12
+ * This is the way in that presumes nothing:
13
+ *
14
+ * npx -y `@codyswann/lisa@latest` workstation --install --provider=bitwarden
15
+ *
16
+ * npx resolves the package into its own cache, so no repository is involved and
17
+ * no agent has to exist yet. The skill stays as the surface for people who
18
+ * already have an agent; this is for people who do not.
19
+ * @module cli/workstation-cmd
20
+ */
21
+ import type { Command } from "commander";
22
+ /**
23
+ * The only dependency this command needs, structurally.
24
+ *
25
+ * Declared here rather than importing `ProgramDependencies` from the program
26
+ * module, which imports this one — a cycle for the sake of a single field.
27
+ */
28
+ interface WorkstationCommandDeps {
29
+ /** Runs the bootstrap and returns its exit code. */
30
+ readonly runWorkstation: (flags: readonly string[]) => number;
31
+ }
32
+ /**
33
+ * Register `lisa workstation`.
34
+ *
35
+ * Kept out of the program module so registering it does not push that file past
36
+ * its size limits — the same reason `addGateCommands` lives beside its own
37
+ * command rather than in the middle of the program.
38
+ * @param program Commander program to mutate.
39
+ * @param deps Program dependencies.
40
+ */
41
+ export declare function addWorkstationCommand(program: Command, deps?: WorkstationCommandDeps): void;
42
+ /**
43
+ * Everything the operator typed after the subcommand name.
44
+ *
45
+ * Taken from argv because the flags are the bootstrap script's vocabulary, not
46
+ * commander's, and forwarding them verbatim is what keeps the CLI and the skill
47
+ * from drifting into two dialects.
48
+ *
49
+ * Searched from index 2 so a project path that happens to be named
50
+ * `workstation` cannot be mistaken for the subcommand.
51
+ * @param argv Full process argv.
52
+ * @param name Subcommand name.
53
+ * @returns Forwarded flags, empty when the subcommand is absent.
54
+ */
55
+ export declare function flagsAfterCommand(argv: readonly string[], name?: string): string[];
56
+ /** Injectable seams so the command is testable without provisioning anything. */
57
+ export interface WorkstationDeps {
58
+ /** Resolve the installed package root. */
59
+ readonly installPath?: () => string;
60
+ /** Run the script. */
61
+ readonly run?: (command: string, args: string[]) => {
62
+ status: number | null;
63
+ };
64
+ /** Report a problem. */
65
+ readonly error?: (message: string) => void;
66
+ }
67
+ /**
68
+ * Locate the bootstrap script inside the installed package.
69
+ *
70
+ * Resolved from the MODULE's own location rather than the working directory:
71
+ * under npx the cwd is wherever the operator happens to be standing, and is
72
+ * frequently not a project at all — which is the entire point of this command.
73
+ * @param installPath Package root.
74
+ * @returns Absolute path to the script.
75
+ * @throws {Error} When the package is incomplete.
76
+ */
77
+ export declare function resolveWorkstationScript(installPath?: string): string;
78
+ /**
79
+ * Run the workstation bootstrap, passing every flag through untouched.
80
+ *
81
+ * Flags are forwarded rather than re-declared. Restating `--install`,
82
+ * `--agents`, `--provider` and the rest here would give the CLI and the skill
83
+ * two vocabularies to keep in step, and the one nobody runs is the one that
84
+ * drifts.
85
+ * @param flags Arguments for the script.
86
+ * @param deps Injected seams.
87
+ * @returns Process exit code.
88
+ */
89
+ export declare function runWorkstation(flags?: readonly string[], deps?: WorkstationDeps): number;
90
+ export {};
91
+ //# sourceMappingURL=workstation-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workstation-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/workstation-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC;;;;;GAKG;AACH,UAAU,sBAAsB;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;CAC/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE,sBAA2C,GAChD,IAAI,CAuBN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,SAAgB,GACnB,MAAM,EAAE,CAGV;AAaD,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;IACpC,sBAAsB;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9E,wBAAwB;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,GAAE,MAA4B,GACxC,MAAM,CAUR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,GAAE,SAAS,MAAM,EAAO,EAC7B,IAAI,GAAE,eAAoB,GACzB,MAAM,CA2BR"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * CLI entry point for the workstation bootstrap.
3
+ *
4
+ * `lisa-setup-workstation` exists to prepare a machine that has no coding agent
5
+ * and no checkout. As a skill it could only be reached by typing a slash command
6
+ * into an agent — and Lisa ships as a devDependency, so it does not exist until
7
+ * a repo is cloned and its dependencies installed.
8
+ *
9
+ * Both of those are precisely the state the skill is supposed to CREATE. The
10
+ * bootstrap was unreachable in the one scenario it was designed for.
11
+ *
12
+ * This is the way in that presumes nothing:
13
+ *
14
+ * npx -y `@codyswann/lisa@latest` workstation --install --provider=bitwarden
15
+ *
16
+ * npx resolves the package into its own cache, so no repository is involved and
17
+ * no agent has to exist yet. The skill stays as the surface for people who
18
+ * already have an agent; this is for people who do not.
19
+ * @module cli/workstation-cmd
20
+ */
21
+ import { spawnSync } from "node:child_process";
22
+ import { existsSync } from "node:fs";
23
+ import path from "node:path";
24
+ import { getCliInstallPath } from "./version-cmd.js";
25
+ /**
26
+ * Register `lisa workstation`.
27
+ *
28
+ * Kept out of the program module so registering it does not push that file past
29
+ * its size limits — the same reason `addGateCommands` lives beside its own
30
+ * command rather than in the middle of the program.
31
+ * @param program Commander program to mutate.
32
+ * @param deps Program dependencies.
33
+ */
34
+ export function addWorkstationCommand(program, deps = { runWorkstation }) {
35
+ program
36
+ .command("workstation")
37
+ .description("Prepare this machine to run coding agents — before any repo exists. " +
38
+ "Detects installed agents, asks which credential manager to use, and " +
39
+ "installs what is missing. Needs no checkout and no agent: run it with " +
40
+ "'npx -y @codyswann/lisa@latest workstation --install'.")
41
+ // Flags belong to the bootstrap script, not to commander. Re-declaring them
42
+ // here would give the CLI and the skill two vocabularies to keep in step.
43
+ //
44
+ // Read straight off argv rather than via passThroughOptions, which
45
+ // commander only permits once the PARENT enables positional options — a
46
+ // global parsing change affecting every other command, to serve one.
47
+ .allowUnknownOption(true)
48
+ .argument("[flags...]", "flags forwarded to the bootstrap")
49
+ .action(() => {
50
+ const code = deps.runWorkstation(flagsAfterCommand(process.argv));
51
+ if (code !== 0) {
52
+ process.exitCode = code;
53
+ }
54
+ });
55
+ }
56
+ /**
57
+ * Everything the operator typed after the subcommand name.
58
+ *
59
+ * Taken from argv because the flags are the bootstrap script's vocabulary, not
60
+ * commander's, and forwarding them verbatim is what keeps the CLI and the skill
61
+ * from drifting into two dialects.
62
+ *
63
+ * Searched from index 2 so a project path that happens to be named
64
+ * `workstation` cannot be mistaken for the subcommand.
65
+ * @param argv Full process argv.
66
+ * @param name Subcommand name.
67
+ * @returns Forwarded flags, empty when the subcommand is absent.
68
+ */
69
+ export function flagsAfterCommand(argv, name = "workstation") {
70
+ const at = argv.indexOf(name, 2);
71
+ return at === -1 ? [] : argv.slice(at + 1);
72
+ }
73
+ /** Where the bootstrap script sits inside the published package. */
74
+ const SCRIPT_RELATIVE = path.join("plugins", "src", "base", "skills", "lisa-setup-workstation", "scripts", "cli.mjs");
75
+ /**
76
+ * Locate the bootstrap script inside the installed package.
77
+ *
78
+ * Resolved from the MODULE's own location rather than the working directory:
79
+ * under npx the cwd is wherever the operator happens to be standing, and is
80
+ * frequently not a project at all — which is the entire point of this command.
81
+ * @param installPath Package root.
82
+ * @returns Absolute path to the script.
83
+ * @throws {Error} When the package is incomplete.
84
+ */
85
+ export function resolveWorkstationScript(installPath = getCliInstallPath()) {
86
+ const script = path.join(installPath, SCRIPT_RELATIVE);
87
+ if (!existsSync(script)) {
88
+ throw new Error(`cannot find the workstation script at ${script}.\n` +
89
+ `This means the installed Lisa package is incomplete — reinstall, or ` +
90
+ `run a newer version with 'npx -y @codyswann/lisa@latest workstation'.`);
91
+ }
92
+ return script;
93
+ }
94
+ /**
95
+ * Run the workstation bootstrap, passing every flag through untouched.
96
+ *
97
+ * Flags are forwarded rather than re-declared. Restating `--install`,
98
+ * `--agents`, `--provider` and the rest here would give the CLI and the skill
99
+ * two vocabularies to keep in step, and the one nobody runs is the one that
100
+ * drifts.
101
+ * @param flags Arguments for the script.
102
+ * @param deps Injected seams.
103
+ * @returns Process exit code.
104
+ */
105
+ export function runWorkstation(flags = [], deps = {}) {
106
+ const report = deps.error ?? ((message) => process.stderr.write(message));
107
+ const located = (() => {
108
+ try {
109
+ return resolveWorkstationScript((deps.installPath ?? getCliInstallPath)());
110
+ }
111
+ catch (error) {
112
+ report(`${error.message}\n`);
113
+ return null;
114
+ }
115
+ })();
116
+ if (located === null)
117
+ return 1;
118
+ const run = deps.run ??
119
+ ((command, args) => spawnSync(command, args, { stdio: "inherit" }));
120
+ // Spawned rather than imported: the script is plain ESM with no build step,
121
+ // and running it as its own process keeps the interactive prompt attached to
122
+ // the real terminal — a credential-manager question read through a bundler's
123
+ // stdio is how a bootstrap ends up hanging with nothing on screen.
124
+ const result = run(process.execPath, [located, ...flags]);
125
+ return result.status ?? 1;
126
+ }
127
+ //# sourceMappingURL=workstation-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workstation-cmd.js","sourceRoot":"","sources":["../../src/cli/workstation-cmd.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAopEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA2pNjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
1
+ {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0pEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAyqNjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}