bitfab-cli 0.2.335 → 0.2.337

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/dist/index.js +38 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -23996,6 +23996,34 @@ var assertionTargetShape = external_exports.discriminatedUnion("kind", [
23996
23996
  ]).optional().describe('Which call to check when the trace runs that span more than once, e.g. a retry loop. "first", "last" (the default), or a 0-based index. Leave it off unless the repetition matters.')
23997
23997
  }).describe("Check one span by name rather than the whole trace, e.g. that a particular tool call was made with the right arguments.")
23998
23998
  ]).describe('SCOPE: what part of the trace under evaluation this assertion is checked against. OMIT IT for the whole trace, which is the common case and the right default when unsure. Pass { "kind": "output" } to check only the final output, or { "kind": "span", "name": "..." } to check one span. Scoping narrows what a judge looks at, so a wrong scope hides real failures. A target naming something the evaluated trace does not contain makes the check ERRORED, never passed, because a check that could not run must never look like a check that succeeded.');
23999
+ var saveAssertionCategory = {
24000
+ name: "save_assertion_category",
24001
+ title: "Save Assertion Category",
24002
+ description: "Create or edit an assertion category shared within this organization. Returns its ID for category_assertion_id in save_trace_assertions. Omit id to create. Pass an existing id to edit. Omit description on an edit to preserve it. Pass an empty description to clear it.",
24003
+ inputSchema: {
24004
+ id: external_exports.uuid().optional().describe("Existing category ID to edit. Omit to create a category."),
24005
+ title: external_exports.string().trim().min(1).describe("The category title."),
24006
+ description: external_exports.string().optional().describe("What assertions in this category have in common. Omit on an edit to preserve it. Pass an empty string to clear it.")
24007
+ }
24008
+ };
24009
+ var listAssertionCategories = {
24010
+ name: "list_assertion_categories",
24011
+ title: "List Assertion Categories",
24012
+ description: "List assertion categories in this organization with their IDs, titles, and descriptions. Use the returned ID as category_assertion_id in save_trace_assertions.",
24013
+ inputSchema: {}
24014
+ };
24015
+ var getAssertionCategory = {
24016
+ name: "get_assertion_category",
24017
+ title: "Get Assertion Category",
24018
+ description: "Read one assertion category in this organization by ID, including its title and description.",
24019
+ inputSchema: { id: external_exports.uuid().describe("ID of the category to read.") }
24020
+ };
24021
+ var deleteAssertionCategory = {
24022
+ name: "delete_assertion_category",
24023
+ title: "Delete Assertion Category",
24024
+ description: "Delete an assertion category from this organization. Its assertions are kept and become uncategorized. Their existing verdicts are kept.",
24025
+ inputSchema: { id: external_exports.uuid().describe("ID of the category to delete.") }
24026
+ };
23999
24027
  var saveTraceAssertions = {
24000
24028
  name: "save_trace_assertions",
24001
24029
  title: "Save Trace Assertions",
@@ -24004,6 +24032,7 @@ var saveTraceAssertions = {
24004
24032
  traceId: external_exports.uuid().describe("The ORIGINAL trace to attach assertions to. A replay trace id is refused, and the error names the original to retry with, because a replay reads its original's assertions automatically."),
24005
24033
  assertions: external_exports.preprocess(parseJsonString, external_exports.array(external_exports.object({
24006
24034
  id: external_exports.uuid().optional().describe("Id of an existing assertion to edit, from a previous save or from get_trace_assertions. Omit to add a new one."),
24035
+ category_assertion_id: external_exports.uuid().nullish().describe("Category ID from save_assertion_category or list_assertion_categories. Omit on an edit to preserve the category. Pass null to remove it."),
24007
24036
  assertion: external_exports.string().min(1).describe("The single thing that must hold, in one sentence, stated so a reader who has never seen this trace could check it, e.g. 'The itinerary returned lands before 9am local time'. One claim per assertion: if you are about to write 'and', write two assertions instead, so each can pass or fail on its own."),
24008
24037
  passCriteria: external_exports.string().optional().describe("How a judge should recognise a pass, when the assertion alone leaves room to argue, e.g. 'arrival timestamp is strictly before 09:00 in the destination timezone'. Optional, and only worth writing when it removes real ambiguity. Same field save_grader takes, so an assertion that proves out across many traces is promoted into a grader by copying it. On an edit, omit to keep the current value and pass an empty string to clear it."),
24009
24038
  failCriteria: external_exports.string().optional().describe("How a judge should recognise a failure, for cases the pass criteria do not obviously exclude, e.g. 'any leg departing after 09:00, including connections'. Optional. On an edit, omit to keep the current value and pass an empty string to clear it."),
@@ -24014,7 +24043,7 @@ var saveTraceAssertions = {
24014
24043
  var getTraceAssertions = {
24015
24044
  name: "get_trace_assertions",
24016
24045
  title: "Get Trace Assertions",
24017
- description: `Read what SHOULD happen when one or more traces are replayed: each trace's assertions, their pass/fail criteria, and what part of the evaluated trace each one checks. Call this before judging a replay so the verdict is measured against what the user actually asked for rather than a guess, and before save_trace_assertions to find the assertion to edit or to avoid creating a duplicate. No span content is loaded, so one call accepts up to ${GET_TRACE_ASSERTIONS_MAX_IDS} ids. Accepts original trace ids and replay trace ids alike: a replay with no assertions of its own reads its original's, and the response says which original they came from. An assertion whose target cannot be found on the trace being evaluated is errored, never passed, so record it with save_agent_labels \`skip\` rather than a FAIL.`,
24046
+ description: `Read what SHOULD happen when one or more traces are replayed: each trace's assertions, their pass/fail criteria, and what part of the evaluated trace each one checks. Categorized assertions include category_assertion_id and the category's id, title, and description. Call this before judging a replay so the verdict is measured against what the user actually asked for rather than a guess, and before save_trace_assertions to find the assertion to edit or to avoid creating a duplicate. No span content is loaded, so one call accepts up to ${GET_TRACE_ASSERTIONS_MAX_IDS} ids. Accepts original trace ids and replay trace ids alike: a replay with no assertions of its own reads its original's, and the response says which original they came from. An assertion whose target cannot be found on the trace being evaluated is errored, never passed, so record it with save_agent_labels \`skip\` rather than a FAIL.`,
24018
24047
  inputSchema: {
24019
24048
  traceIds: external_exports.preprocess(parseJsonString, external_exports.array(external_exports.uuid()).min(1).max(GET_TRACE_ASSERTIONS_MAX_IDS)).describe(`Original trace IDs to read assertions for (1-${GET_TRACE_ASSERTIONS_MAX_IDS})`)
24020
24049
  }
@@ -24373,6 +24402,10 @@ var ALL_TOOL_CONTRACTS = [
24373
24402
  getSpanField,
24374
24403
  saveAgentLabels,
24375
24404
  saveHumanLabels,
24405
+ saveAssertionCategory,
24406
+ listAssertionCategories,
24407
+ getAssertionCategory,
24408
+ deleteAssertionCategory,
24376
24409
  saveTraceAssertions,
24377
24410
  getTraceAssertions,
24378
24411
  archiveTraceAssertions,
@@ -27010,10 +27043,10 @@ var semver3 = __toESM(require_semver2(), 1);
27010
27043
 
27011
27044
  // ../bitfab-plugin-lib/dist/bakedSdkVersions.js
27012
27045
  var BAKED_SDK_VERSIONS = {
27013
- typescript: "0.53.4",
27014
- python: "0.54.0",
27015
- ruby: "0.51.3",
27016
- go: "0.51.2"
27046
+ typescript: "0.54.0",
27047
+ python: "0.55.0",
27048
+ ruby: "0.51.4",
27049
+ go: "0.51.3"
27017
27050
  };
27018
27051
 
27019
27052
  // ../bitfab-plugin-lib/dist/installedSdk.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bitfab-cli",
3
- "version": "0.2.335",
3
+ "version": "0.2.337",
4
4
  "description": "Install and configure the Bitfab plugin in Claude Code, Codex, or Cursor, or the Bitfab skill pack in Amp (Alpha).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",