@skillrecordings/cli 0.18.1 → 0.19.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/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,38 @@ 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
+
53
+ ## OAuth Broker Spike
54
+
55
+ Use this to inspect the planned GitHub OAuth + broker auth model that reduces
56
+ local dependencies for team members:
57
+
58
+ ```bash
59
+ skill auth oauth-spike
60
+ skill auth oauth-spike --json
61
+ ```
62
+
17
63
  ## Adaptive Hints
18
64
 
19
65
  The CLI prints adaptive onboarding/discovery hints to `stderr` for new users.
@@ -206,7 +252,7 @@ The CLI uses a layered secrets system:
206
252
  1Password (OP_SERVICE_ACCOUNT_TOKEN set?)
207
253
  ↓ yes → resolve from 1Password vault
208
254
  ↓ no
209
- .env.encrypted exists + AGE_SECRET_KEY available?
255
+ .env.encrypted exists + SKILL_AGE_KEY available?
210
256
  ↓ yes → decrypt and load
211
257
  ↓ no
212
258
  .env.local exists?
@@ -241,7 +287,7 @@ op item edit "skill-cli" --vault "Support" "MY_NEW_KEY=your-secret-value"
241
287
 
242
288
  ```bash
243
289
  # Decrypt current secrets
244
- AGE_KEY=$(op read "op://Support/skill-cli-age-key/password")
290
+ AGE_KEY=$(op read "op://Support/skill-cli-age-key/private_key")
245
291
  age -d -i <(echo "$AGE_KEY") .env.encrypted > .env.local
246
292
 
247
293
  # Add new secret to .env.local
@@ -269,7 +315,7 @@ git commit -m "chore(cli): add MY_NEW_KEY secret"
269
315
  op item edit "skill-cli" --vault "Support" "MY_KEY=new-value"
270
316
 
271
317
  # 2. Update .env.encrypted (same process as adding)
272
- AGE_KEY=$(op read "op://Support/skill-cli-age-key/password")
318
+ AGE_KEY=$(op read "op://Support/skill-cli-age-key/private_key")
273
319
  age -d -i <(echo "$AGE_KEY") .env.encrypted > .env.local
274
320
 
275
321
  # Edit .env.local with new value
@@ -301,7 +347,7 @@ skill auth setup
301
347
  | Item | Location |
302
348
  |------|----------|
303
349
  | Secrets | `op://Support/skill-cli/*` |
304
- | Age keypair | `op://Support/skill-cli-age-key/password` |
350
+ | Age keypair | `op://Support/skill-cli-age-key/private_key` |
305
351
  | Encrypted env | `packages/cli/.env.encrypted` |
306
352
  | Secret refs | `packages/cli/src/core/secret-refs.ts` |
307
353
 
@@ -311,7 +357,7 @@ For CI environments without 1Password:
311
357
 
312
358
  ```bash
313
359
  # Set age key as CI secret, then:
314
- echo "$AGE_SECRET_KEY" > /tmp/age.key
360
+ echo "$SKILL_AGE_KEY" > /tmp/age.key
315
361
  age -d -i /tmp/age.key .env.encrypted > .env.local
316
362
  rm /tmp/age.key
317
363
  ```
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