@skillrecordings/cli 0.18.1 → 0.18.2

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/README.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  CLI for the support platform. Agent-friendly with non-interactive defaults.
4
4
 
5
+ ## Install
6
+
7
+ ```bash
8
+ curl -fsSL https://raw.githubusercontent.com/skillrecordings/support/main/packages/cli/install.sh | bash
9
+ ```
10
+
11
+ Installs to `~/.local/bin/skill`. Add to your PATH if needed:
12
+
13
+ ```bash
14
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc
15
+ ```
16
+
17
+ After install, run `skill auth setup` to configure credentials.
18
+
5
19
  ## Usage
6
20
 
7
21
  ```bash
@@ -14,6 +28,28 @@ skill <command> [options]
14
28
  All commands support `--json` for machine-readable output and reliable exit
15
29
  codes.
16
30
 
31
+ ## 1Password Quickstart (60 seconds)
32
+
33
+ If you already have access to the Support vault:
34
+
35
+ ```bash
36
+ # 1) Install required CLI
37
+ brew install 1password-cli
38
+
39
+ # 2) Optional but recommended: cache OP token in local secrets CLI
40
+ secrets add skill_support_1password_service_account_token
41
+
42
+ # 3) Run one setup command
43
+ skill auth setup
44
+
45
+ # 4) Verify
46
+ skill doctor
47
+ ```
48
+
49
+ Notes:
50
+ - `secrets` CLI is optional. If missing, `skill auth setup` falls back to `op signin`.
51
+ - Setup writes `SKILL_AGE_KEY` to `~/.config/skill/age.key` so `.env.encrypted` works without keychain.
52
+
17
53
  ## Adaptive Hints
18
54
 
19
55
  The CLI prints adaptive onboarding/discovery hints to `stderr` for new users.
@@ -206,7 +242,7 @@ The CLI uses a layered secrets system:
206
242
  1Password (OP_SERVICE_ACCOUNT_TOKEN set?)
207
243
  ↓ yes → resolve from 1Password vault
208
244
  ↓ no
209
- .env.encrypted exists + AGE_SECRET_KEY available?
245
+ .env.encrypted exists + SKILL_AGE_KEY available?
210
246
  ↓ yes → decrypt and load
211
247
  ↓ no
212
248
  .env.local exists?
@@ -241,7 +277,7 @@ op item edit "skill-cli" --vault "Support" "MY_NEW_KEY=your-secret-value"
241
277
 
242
278
  ```bash
243
279
  # Decrypt current secrets
244
- AGE_KEY=$(op read "op://Support/skill-cli-age-key/password")
280
+ AGE_KEY=$(op read "op://Support/skill-cli-age-key/private_key")
245
281
  age -d -i <(echo "$AGE_KEY") .env.encrypted > .env.local
246
282
 
247
283
  # Add new secret to .env.local
@@ -269,7 +305,7 @@ git commit -m "chore(cli): add MY_NEW_KEY secret"
269
305
  op item edit "skill-cli" --vault "Support" "MY_KEY=new-value"
270
306
 
271
307
  # 2. Update .env.encrypted (same process as adding)
272
- AGE_KEY=$(op read "op://Support/skill-cli-age-key/password")
308
+ AGE_KEY=$(op read "op://Support/skill-cli-age-key/private_key")
273
309
  age -d -i <(echo "$AGE_KEY") .env.encrypted > .env.local
274
310
 
275
311
  # Edit .env.local with new value
@@ -301,7 +337,7 @@ skill auth setup
301
337
  | Item | Location |
302
338
  |------|----------|
303
339
  | Secrets | `op://Support/skill-cli/*` |
304
- | Age keypair | `op://Support/skill-cli-age-key/password` |
340
+ | Age keypair | `op://Support/skill-cli-age-key/private_key` |
305
341
  | Encrypted env | `packages/cli/.env.encrypted` |
306
342
  | Secret refs | `packages/cli/src/core/secret-refs.ts` |
307
343
 
@@ -311,7 +347,7 @@ For CI environments without 1Password:
311
347
 
312
348
  ```bash
313
349
  # Set age key as CI secret, then:
314
- echo "$AGE_SECRET_KEY" > /tmp/age.key
350
+ echo "$SKILL_AGE_KEY" > /tmp/age.key
315
351
  age -d -i /tmp/age.key .env.encrypted > .env.local
316
352
  rm /tmp/age.key
317
353
  ```
package/bin/skill.mjs CHANGED
File without changes
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  Redis2,
13
13
  log
14
- } from "./chunk-KEV3QKXP.js";
14
+ } from "./chunk-HKRLO2GE.js";
15
15
  import {
16
16
  queryVectors
17
17
  } from "./chunk-H3D6VCME.js";
@@ -3560,7 +3560,7 @@ ${message.body}
3560
3560
  ---
3561
3561
  Write your response:`;
3562
3562
  if (useAgentMode && appId) {
3563
- const { runSupportAgent } = await import("./config-6PEJQQJY.js");
3563
+ const { runSupportAgent } = await import("./config-HHQF5U6R.js");
3564
3564
  await log("debug", "draft using agent mode", {
3565
3565
  workflow: "pipeline",
3566
3566
  step: "draft",
@@ -7096,4 +7096,4 @@ export {
7096
7096
  runPipeline,
7097
7097
  runThreadPipeline
7098
7098
  };
7099
- //# sourceMappingURL=chunk-ZCWCT4ES.js.map
7099
+ //# sourceMappingURL=chunk-F3WI3BN5.js.map
@@ -5,7 +5,7 @@ import {
5
5
  traceMemoryStore,
6
6
  traceMemoryVote,
7
7
  traceWorkflowStep
8
- } from "./chunk-KEV3QKXP.js";
8
+ } from "./chunk-HKRLO2GE.js";
9
9
  import {
10
10
  MemoryService,
11
11
  VotingService,
@@ -15606,4 +15606,4 @@ export {
15606
15606
  DEFAULT_AGENT_MODEL,
15607
15607
  runSupportAgent
15608
15608
  };
15609
- //# sourceMappingURL=chunk-LV53JZHC.js.map
15609
+ //# sourceMappingURL=chunk-GNPR4OKX.js.map
@@ -6,6 +6,24 @@ import {
6
6
  init_esm_shims();
7
7
  import { Axiom } from "@axiomhq/js";
8
8
  var axiomClient = null;
9
+ var hasLoggedTransientAxiomIngestWarning = false;
10
+ function isTransientAxiomIngestError(error) {
11
+ if (!(error instanceof Error)) return false;
12
+ const message = error.message || "";
13
+ return error instanceof SyntaxError && message.includes("Unexpected end of JSON input") || error.name === "TimeoutError" || message.includes("The operation timed out");
14
+ }
15
+ function handleAxiomError(error, context) {
16
+ if (isTransientAxiomIngestError(error)) {
17
+ if (!hasLoggedTransientAxiomIngestWarning) {
18
+ hasLoggedTransientAxiomIngestWarning = true;
19
+ console.warn(
20
+ "[Axiom] Transient ingest response issue detected; suppressing repeated warnings"
21
+ );
22
+ }
23
+ return;
24
+ }
25
+ console.error(`[Axiom] Failed to ${context}:`, error);
26
+ }
9
27
  async function sendTrace(trace) {
10
28
  if (!axiomClient) {
11
29
  return;
@@ -17,7 +35,7 @@ async function sendTrace(trace) {
17
35
  ...trace
18
36
  });
19
37
  } catch (error) {
20
- console.error("[Axiom] Failed to send trace:", error);
38
+ handleAxiomError(error, "send trace");
21
39
  }
22
40
  }
23
41
  async function log(level, message, metadata) {
@@ -4492,4 +4510,4 @@ export {
4492
4510
  traceMemoryCite,
4493
4511
  Redis2
4494
4512
  };
4495
- //# sourceMappingURL=chunk-KEV3QKXP.js.map
4513
+ //# sourceMappingURL=chunk-HKRLO2GE.js.map