scribeclock 0.1.6 → 0.1.7

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
@@ -72,6 +72,7 @@ the app become tasks on the project; docs: https://scribeclock.com/help/bug-repo
72
72
  ```bash
73
73
  scribeclock connect --env # links this repo to its project, writes .scribeclock.json + SCRIBECLOCK_INGEST_KEY to .env
74
74
  scribeclock ingest prompt --platform ios | pbcopy # the prompt to paste into your AI agent: key, event shape, stack-specific steps
75
+ scribeclock issues diagnose 3f2a9c1b --comment # root-cause brief: where it died, likely causes, what to check, files to open
75
76
  scribeclock ingest test # sends a test error straight to https://scribeclock.com/ingest → issue + task
76
77
  scribeclock issues # what users hit: level, title, where, count, users, last seen, task
77
78
  scribeclock issues show 3f2a9c1b # stack trace, breadcrumbs, trace logs, context
@@ -477,6 +477,36 @@ async function issueStatusCommand(ctx, inv, status) {
477
477
  ctx.out.info(ctx.out.dim("Tip: pass --release <version> (or --commit) so a later occurrence in another release counts as a regression."));
478
478
  });
479
479
  }
480
+ export const issuesDiagnose = cmd({
481
+ path: "issues diagnose",
482
+ group: "Bug reports",
483
+ summary: "Root-cause brief for an issue: where it died (app frames only), likely causes with evidence, what to check, files to open, the trail to reproduce.",
484
+ description: "Reads everything stored for the issue and prints a diagnosis: the app's own frames with reporter and runtime plumbing removed (Swift symbols demangled), the failure category and the most likely causes with the evidence and the exact checks for each, the files / functions to open, the breadcrumb trail to reproduce, impact by release and environment, the device and the last trace logs, similar open issues. --comment posts it on the issue's task; --model adds an analysis from the organization's configured AI provider.",
485
+ tool: "diagnose_issue",
486
+ positionals: [{ name: "issue", required: true, description: "Issue id (short or full) or a task key (#123)." }],
487
+ flags: [
488
+ { name: "events", alias: "n", type: "number", description: "Recent events to read (default 10)." },
489
+ { name: "comment", type: "boolean", description: "Post the brief as a comment on the linked task." },
490
+ { name: "model", type: "boolean", description: "Also ask the organization's AI provider for a written analysis." },
491
+ ],
492
+ examples: ["scribeclock issues diagnose 3f2a9c1b", "scribeclock issues diagnose '#731' --comment", "scribeclock issues diagnose 3f2a9c1b --json | jq .diagnosis.open_in_code"],
493
+ async run(ctx, inv) {
494
+ const ref = requirePositional(inv, 0, "An issue id", "scribeclock issues diagnose 3f2a9c1b");
495
+ const data = await ctx.call("diagnose_issue", { issue_id: ref, event_limit: num(inv.flags.events), post_comment: inv.flags.comment === true, with_model: inv.flags.model === true });
496
+ return emit(ctx, data, () => {
497
+ ctx.out.log(String(data.markdown ?? ""));
498
+ if (data.model_analysis) {
499
+ ctx.out.log("");
500
+ ctx.out.log(ctx.out.bold("Analysis from your AI provider"));
501
+ ctx.out.log(String(data.model_analysis));
502
+ }
503
+ else if (data.model_note)
504
+ ctx.out.info(ctx.out.dim(String(data.model_note)));
505
+ if (data.posted_comment)
506
+ ctx.out.info("Posted on the task.");
507
+ });
508
+ },
509
+ });
480
510
  export const issuesResolve = cmd({
481
511
  path: "issues resolve",
482
512
  group: "Bug reports",
@@ -1064,4 +1094,4 @@ export const analyticsCommand = cmd({
1064
1094
  });
1065
1095
  },
1066
1096
  });
1067
- export const INGEST_COMMANDS = [connectCommand, issuesList, issuesShow, issuesResolve, issuesIgnore, issuesReopen, issuesTask, bugCommand, ingestKeys, ingestRevoke, ingestTest, ingestSnippetsCommand, ingestPromptCommand, ingestForward, ingestSettings, issuesUrgency, analyticsCommand, healthCommand];
1097
+ export const INGEST_COMMANDS = [connectCommand, issuesList, issuesShow, issuesDiagnose, issuesResolve, issuesIgnore, issuesReopen, issuesTask, bugCommand, ingestKeys, ingestRevoke, ingestTest, ingestSnippetsCommand, ingestPromptCommand, ingestForward, ingestSettings, issuesUrgency, analyticsCommand, healthCommand];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scribeclock",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "ScribeClock from the terminal: tasks, time clock, projects, PRDs, meetings, files, vault and Cloudflare — a thin client over the ScribeClock MCP server.",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Haydar Al-Karar LLC, dba Karar Tech",