@a5c-ai/triggers 5.0.1-staging.69cb593ea536 → 5.0.1-staging.6ab464ce4307

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 (2) hide show
  1. package/action.yml +63 -68
  2. package/package.json +7 -1
package/action.yml CHANGED
@@ -147,75 +147,55 @@ runs:
147
147
  id: resolve-runtime
148
148
  shell: bash
149
149
  env:
150
- ACTION_ROOT: ${{ github.action_path }}
150
+ ACTION_REF: ${{ github.action_ref }}
151
151
  run: |
152
152
  set -euo pipefail
153
- REPO_ROOT=$(cd "$ACTION_ROOT/../.." && pwd)
154
- if [ -d "$REPO_ROOT/packages/agent-mux/cli" ] && [ -f "$REPO_ROOT/packages/triggers/action.yml" ]; then
153
+ WORKSPACE="${GITHUB_WORKSPACE:-$(pwd)}"
154
+ if [ -d "$WORKSPACE/packages/agent-mux/cli" ] && [ -f "$WORKSPACE/packages/triggers/action.yml" ]; then
155
155
  echo "mode=monorepo" >> "$GITHUB_OUTPUT"
156
- echo "repo_root=$REPO_ROOT" >> "$GITHUB_OUTPUT"
156
+ echo "tag=staging" >> "$GITHUB_OUTPUT"
157
+ elif [ "$ACTION_REF" = "staging" ]; then
158
+ echo "mode=external" >> "$GITHUB_OUTPUT"
159
+ echo "tag=staging" >> "$GITHUB_OUTPUT"
157
160
  else
158
- echo "mode=npx" >> "$GITHUB_OUTPUT"
159
- echo "repo_root=" >> "$GITHUB_OUTPUT"
161
+ echo "mode=external" >> "$GITHUB_OUTPUT"
162
+ echo "tag=latest" >> "$GITHUB_OUTPUT"
160
163
  fi
161
164
 
162
- - name: Restore monorepo build cache
163
- if: steps.resolve-runtime.outputs.mode == 'monorepo'
164
- uses: actions/cache@v4
165
- with:
166
- path: |
167
- ${{ steps.resolve-runtime.outputs.repo_root }}/node_modules
168
- ${{ steps.resolve-runtime.outputs.repo_root }}/packages/**/dist
169
- ${{ steps.resolve-runtime.outputs.repo_root }}/packages/**/tsconfig.tsbuildinfo
170
- key: triggers-build-${{ runner.os }}-${{ hashFiles(format('{0}/package-lock.json', steps.resolve-runtime.outputs.repo_root)) }}
171
- restore-keys: |
172
- triggers-build-${{ runner.os }}-
173
-
174
- - name: Build agent-mux (monorepo)
175
- if: steps.resolve-runtime.outputs.mode == 'monorepo'
165
+ - name: Install runtime packages
176
166
  shell: bash
177
167
  env:
178
- REPO_ROOT: ${{ steps.resolve-runtime.outputs.repo_root }}
168
+ NPM_TAG: ${{ steps.resolve-runtime.outputs.tag }}
179
169
  run: |
180
170
  set -euo pipefail
181
- cd "$REPO_ROOT"
182
- if [ ! -d "node_modules" ]; then
183
- npm ci
184
- fi
185
- if [ ! -f "packages/agent-mux/cli/dist/index.js" ]; then
186
- npm run build:agent-mux
187
- fi
188
- if [ ! -f "packages/triggers/dist/cli.js" ]; then
189
- npm run build --workspace=@a5c-ai/triggers
190
- fi
191
- if [ ! -f "packages/sdk/dist/cli/main.js" ]; then
192
- npm run build --workspace=@a5c-ai/babysitter-sdk
193
- fi
171
+ echo "Installing @a5c-ai packages with tag: $NPM_TAG"
172
+ npm install -g --legacy-peer-deps @a5c-ai/agent-mux-cli@$NPM_TAG @a5c-ai/babysitter-sdk@$NPM_TAG @a5c-ai/triggers@$NPM_TAG
173
+ npm install -g --legacy-peer-deps @a5c-ai/hooks-mux-cli@$NPM_TAG 2>/dev/null || echo "hooks-mux-cli install skipped (optional)"
174
+ which amux && amux --version || { echo "ERROR: amux not found after install"; exit 1; }
194
175
 
195
176
  - name: Install harness
196
177
  if: ${{ inputs.harness != '' || inputs.adapter != '' }}
197
178
  shell: bash
198
179
  env:
199
- ACTION_ROOT: ${{ github.action_path }}
200
- RUNTIME_MODE: ${{ steps.resolve-runtime.outputs.mode }}
201
- REPO_ROOT: ${{ steps.resolve-runtime.outputs.repo_root }}
202
180
  INPUT_HARNESS: ${{ inputs.harness || inputs.adapter }}
203
181
  INPUT_WORKING_DIRECTORY: ${{ inputs.working-directory }}
204
182
  run: |
205
183
  set -euo pipefail
206
184
  cd "$INPUT_WORKING_DIRECTORY"
207
- if [ "$RUNTIME_MODE" = "monorepo" ]; then
208
- node "$REPO_ROOT/packages/agent-mux/cli/dist/index.js" install "$INPUT_HARNESS" || true
209
- else
210
- npx -y @a5c-ai/agent-mux-cli install "$INPUT_HARNESS" || true
211
- fi
185
+ # Map adapter names to amux agent aliases
186
+ AMUX_AGENT="$INPUT_HARNESS"
187
+ case "$INPUT_HARNESS" in
188
+ claude-code) AMUX_AGENT="claude" ;;
189
+ gemini-cli) AMUX_AGENT="gemini" ;;
190
+ copilot-cli) AMUX_AGENT="copilot" ;;
191
+ cursor-cli) AMUX_AGENT="cursor" ;;
192
+ esac
193
+ amux install "$AMUX_AGENT" || true
212
194
 
213
195
  - name: Install babysitter plugin
214
196
  if: ${{ inputs.babysitter-plugin == 'true' }}
215
197
  shell: bash
216
198
  env:
217
- RUNTIME_MODE: ${{ steps.resolve-runtime.outputs.mode }}
218
- REPO_ROOT: ${{ steps.resolve-runtime.outputs.repo_root }}
219
199
  INPUT_HARNESS: ${{ inputs.harness || inputs.adapter }}
220
200
  INPUT_WORKING_DIRECTORY: ${{ inputs.working-directory }}
221
201
  INPUT_PROCESS_FILE: ${{ inputs.process-file }}
@@ -223,26 +203,35 @@ runs:
223
203
  set -euo pipefail
224
204
  cd "$INPUT_WORKING_DIRECTORY"
225
205
 
226
- if [ "$RUNTIME_MODE" = "monorepo" ]; then
227
- # Generate plugins if generator script exists
228
- if [ -f "$REPO_ROOT/package.json" ] && node -e "process.exit(JSON.parse(require('fs').readFileSync('$REPO_ROOT/package.json','utf8')).scripts?.['generate:plugins'] ? 0 : 1)" 2>/dev/null; then
229
- cd "$REPO_ROOT" && npm run generate:plugins && cd "$INPUT_WORKING_DIRECTORY"
230
- fi
231
- # Use local SDK directly via node
232
- BABYSITTER="node $REPO_ROOT/packages/sdk/dist/cli/main.js"
233
- else
234
- # External use — install from npm
235
- npm install -g @a5c-ai/babysitter-sdk
236
- BABYSITTER="babysitter"
237
- fi
206
+ # Map to SDK harness names
207
+ SDK_HARNESS="$INPUT_HARNESS"
208
+ case "$INPUT_HARNESS" in
209
+ claude-code) SDK_HARNESS="claude" ;;
210
+ gemini-cli) SDK_HARNESS="gemini" ;;
211
+ copilot-cli) SDK_HARNESS="copilot" ;;
212
+ cursor-cli) SDK_HARNESS="cursor" ;;
213
+ esac
238
214
 
239
- # Install babysitter plugin into harness
240
- $BABYSITTER harness:install-plugin "$INPUT_HARNESS" --workspace "$INPUT_WORKING_DIRECTORY"
215
+ # Install babysitter plugin try SDK installer first, fall back to direct harness commands
216
+ if ! babysitter harness:install-plugin "$SDK_HARNESS" --workspace "$INPUT_WORKING_DIRECTORY" 2>/dev/null; then
217
+ echo "Plugin installer unavailable — installing plugin directly"
218
+ case "$SDK_HARNESS" in
219
+ claude)
220
+ claude plugin marketplace add a5c-ai/babysitter-claude 2>/dev/null || true
221
+ claude plugin install --scope project babysitter@a5c.ai 2>/dev/null || true
222
+ ;;
223
+ *)
224
+ mkdir -p .a5c
225
+ echo '{"type":"module"}' > .a5c/package.json 2>/dev/null || true
226
+ ;;
227
+ esac
228
+ fi
241
229
 
242
- # Copy process file if provided
230
+ # Copy process file if provided (skip if already in target dir)
243
231
  if [ -n "$INPUT_PROCESS_FILE" ]; then
244
232
  mkdir -p .a5c/processes
245
- cp "$INPUT_PROCESS_FILE" .a5c/processes/
233
+ TARGET=".a5c/processes/$(basename "$INPUT_PROCESS_FILE")"
234
+ [ "$(realpath "$INPUT_PROCESS_FILE" 2>/dev/null)" = "$(realpath "$TARGET" 2>/dev/null)" ] || cp "$INPUT_PROCESS_FILE" .a5c/processes/
246
235
  fi
247
236
 
248
237
  - name: Install plugins (legacy)
@@ -254,10 +243,9 @@ runs:
254
243
  INPUT_PLUGINS: ${{ inputs.plugins }}
255
244
  run: |
256
245
  set -euo pipefail
257
- REPO_ROOT=$(cd "$ACTION_ROOT/../.." && pwd)
258
246
  while IFS= read -r plugin; do
259
247
  [ -z "$plugin" ] && continue
260
- node "$REPO_ROOT/packages/agent-mux/cli/dist/index.js" plugin install "$INPUT_ADAPTER" "$plugin"
248
+ amux plugin install "$INPUT_ADAPTER" "$plugin"
261
249
  done <<< "$INPUT_PLUGINS"
262
250
 
263
251
  - name: Evaluate trigger
@@ -271,21 +259,20 @@ runs:
271
259
  EFFECTIVE_GITHUB_TOKEN: ${{ steps.a5c-token.outputs.a5c_token || inputs.github-token }}
272
260
  run: |
273
261
  set -euo pipefail
274
- REPO_ROOT=$(cd "$ACTION_ROOT/../.." && pwd)
275
262
  EVENT_FILE="$RUNNER_TEMP/agent-mux-event.json"
276
263
  RESULT_FILE="$RUNNER_TEMP/agent-mux-trigger.json"
277
264
  INCLUDE_DIFF_ARGS=()
278
265
  if [ "$INPUT_INCLUDE_DIFF" = "true" ]; then
279
266
  INCLUDE_DIFF_ARGS+=(--include-diff)
280
267
  fi
281
- node "$REPO_ROOT/packages/triggers/dist/cli.js" enrich \
268
+ triggers enrich \
282
269
  --backend "$INPUT_TRIGGER_BACKEND" \
283
270
  --token "$EFFECTIVE_GITHUB_TOKEN" \
284
271
  "${INCLUDE_DIFF_ARGS[@]}" \
285
272
  --output "$EVENT_FILE"
286
273
  if [ -z "$INPUT_TRIGGER_QUERY" ]; then
287
274
  echo '{"matched":true,"reasons":["no trigger query configured"]}' > "$RESULT_FILE"
288
- elif node "$REPO_ROOT/packages/triggers/dist/cli.js" evaluate \
275
+ elif triggers evaluate \
289
276
  --backend "$INPUT_TRIGGER_BACKEND" \
290
277
  --query "$INPUT_TRIGGER_QUERY" \
291
278
  --token "$EFFECTIVE_GITHUB_TOKEN" \
@@ -337,14 +324,22 @@ runs:
337
324
  AMUX_TRIGGER_EVENT_PATH: ${{ steps.trigger.outputs.event }}
338
325
  run: |
339
326
  set -euo pipefail
340
- REPO_ROOT=$(cd "$ACTION_ROOT/../.." && pwd)
341
- AMUX="node $REPO_ROOT/packages/agent-mux/cli/dist/index.js"
327
+ AMUX="amux"
328
+
329
+ # Map harness names to amux aliases
330
+ AMUX_HARNESS="$INPUT_HARNESS"
331
+ case "$INPUT_HARNESS" in
332
+ claude-code) AMUX_HARNESS="claude" ;;
333
+ gemini-cli) AMUX_HARNESS="gemini" ;;
334
+ copilot-cli) AMUX_HARNESS="copilot" ;;
335
+ cursor-cli) AMUX_HARNESS="cursor" ;;
336
+ esac
342
337
 
343
338
  # Build command args
344
339
  ARGS=()
345
340
  if [ "$INPUT_COMMAND" = "launch" ] || [ "$INPUT_COMMAND" = "run" ]; then
346
341
  ARGS+=("$INPUT_COMMAND")
347
- [ -n "$INPUT_HARNESS" ] && ARGS+=("$INPUT_HARNESS")
342
+ [ -n "$AMUX_HARNESS" ] && ARGS+=("$AMUX_HARNESS")
348
343
  [ -n "$INPUT_PROVIDER" ] && ARGS+=("$INPUT_PROVIDER")
349
344
  else
350
345
  ARGS+=("$INPUT_COMMAND")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a5c-ai/triggers",
3
- "version": "5.0.1-staging.69cb593ea536",
3
+ "version": "5.0.1-staging.6ab464ce4307",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Event trigger normalization, enrichment, and filtering helpers for automation actions",
@@ -65,5 +65,11 @@
65
65
  },
66
66
  "devDependencies": {
67
67
  "@vitest/coverage-v8": "^4.1.4"
68
+ },
69
+ "atlas": {
70
+ "layers": [
71
+ "cross-cutting"
72
+ ],
73
+ "muxes": []
68
74
  }
69
75
  }