@inflexa-ai/harness 0.41.1 → 0.41.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.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The versioned migrations of the Cortex state tables.
3
+ *
4
+ * The migrator applies them in the order of their names and records each one,
5
+ * thus a migration never changes after a release. A schema change is a new
6
+ * entry, with a name that sorts after every existing one.
7
+ */
8
+ import type { Migration } from "kysely/migration";
9
+ import type { Logger } from "../../lib/logger.js";
10
+ export declare function cortexMigrations(logger: Logger): Record<string, Migration>;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The versioned migrations of the Cortex state tables.
3
+ *
4
+ * The migrator applies them in the order of their names and records each one,
5
+ * thus a migration never changes after a release. A schema change is a new
6
+ * entry, with a name that sorts after every existing one.
7
+ */
8
+ import { baseline } from "./20260927120000_baseline.js";
9
+ export function cortexMigrations(logger) {
10
+ return {
11
+ "20260927120000_baseline": baseline(logger),
12
+ };
13
+ }
@@ -61,11 +61,13 @@ export const showUserTool = defineTool({
61
61
  "(kind=structure, by the URL `alphafold_prediction` returned). The content is inlined on the wire. " +
62
62
  "Pick this tool by what you are referencing, not by how the output looks: " +
63
63
  "NOT for an existing analysis file — never read an artifact and paste its bytes here, reference it with `show_file` " +
64
- "(images, CSVs, PDFs, notebooks). NOT for a stored plan — use `show_plan`. " +
64
+ "(images, CSVs, PDFs, notebooks). Your own prose about the results is content you compose, so it belongs here. " +
65
+ "NOT for a stored plan — use `show_plan`. " +
65
66
  "NEVER put markdown image syntax pointing at a workspace file in a `markdown` body: `![](runs/.../volcano.png)` " +
66
- "renders as a broken image, because the chat UI cannot resolve workspace-relative paths. To interleave figures " +
67
- "with prose (a write-up, a narrative summary), emit a SEQUENCE of cards in display order — `show_user(markdown)` " +
68
- "for a prose section, then `show_file` for the figures that follow it, and so on — instead of one monolithic card. " +
67
+ "renders as a broken image, because the chat UI cannot resolve workspace-relative paths. When an answer discusses " +
68
+ "two or more figures, emit a SEQUENCE of cards in one batch, in reading order — `show_user(markdown)` for a prose " +
69
+ "section, then the chart or the `show_file` it discusses, then the next section — instead of one monolithic card " +
70
+ "or reply text below all the cards. " +
69
71
  "One card per call, rendered in call order; an identical repeat call resolves to the same card, so compose the " +
70
72
  "finished content before calling rather than re-rendering a draft.",
71
73
  inputSchema: ShowUserInputSchema,
@@ -25,7 +25,7 @@ const ShowFileInputSchema = z.object({
25
25
  }))
26
26
  .min(1)
27
27
  .max(MAX_FILES)
28
- .describe(`The related set of files to show together, 1 to ${MAX_FILES} per call; multiple render as ONE gallery card. Pass a related set in a single call — do not make one call per figure.`),
28
+ .describe(`The files to show together, 1 to ${MAX_FILES} per call; multiple render as ONE gallery card. Pass all the figures that one prose section discusses in a single call. Figures for different sections go in separate calls.`),
29
29
  });
30
30
  export const showFileTool = defineTool({
31
31
  id: "show_file",
@@ -36,8 +36,9 @@ export const showFileTool = defineTool({
36
36
  "Paths are analysis-rooted (no leading slash, no `..`); discover them with `workspace_search` or `list_files`. " +
37
37
  "The tool checks the shape of each path only, not that the file exists, so a wrong path fails only when the user views the card; " +
38
38
  "`shown: false` with `invalid_path` means a path has a leading slash or a `..` segment. " +
39
- "Up to 10 files per call — pass a related set in ONE call and they render as a gallery, rather than one call per figure. " +
40
- "Cards render in call order, so to interleave figures with prose alternate `show_user(markdown)` and `show_file` calls " +
39
+ "Up to 10 files per call, rendered as one gallery — pass all the figures that one prose section discusses in ONE call. " +
40
+ "Cards render in call order, so to put figures next to their prose, emit `show_user(markdown)` sections and `show_file` " +
41
+ "calls in one batch, in reading order: a section, then the `show_file` for its figures, then the next section " +
41
42
  "(markdown image syntax pointing at a workspace file does NOT render — this tool is the only way to show one).",
42
43
  inputSchema: ShowFileInputSchema,
43
44
  // `.min(1)` on `files` makes index 0 total after the parse.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inflexa-ai/harness",
3
- "version": "0.41.1",
3
+ "version": "0.41.2",
4
4
  "description": "Host-agnostic bioinformatics agent harness — hand-rolled agent loop, DBOS-durable workflows, sandboxed compute.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -77,6 +77,7 @@
77
77
  "hono": "^4.12.34",
78
78
  "hyparquet": "^1.28.1",
79
79
  "js-tiktoken": "^1.0.21",
80
+ "kysely": "^0.29.6",
80
81
  "mime": "^4.1.0",
81
82
  "nanoid": "^5.1.16",
82
83
  "neverthrow": "^8.2.0",