@vimhead.dev/norn-cli 0.1.0-tip.35611592848.1 → 0.1.0-tip.35614826665.1
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/assets/README.md +1 -1
- package/assets/docs/workflows.md +8 -2
- package/assets/examples/agent-then-analysis/plugin.ts +1 -1
- package/assets/examples/caller-owned-routing/assessment.ts +1 -1
- package/assets/examples/caller-owned-routing/revision.ts +1 -1
- package/assets/examples/caller-selected-continuation/producer.ts +1 -1
- package/assets/examples/coordinating-multiple-agents/plugin.ts +1 -1
- package/assets/examples/getting-started/plugin.ts +1 -1
- package/assets/examples/minimal-workflow/plugin.ts +1 -1
- package/assets/examples/shared-state/plugin.ts +1 -1
- package/assets/examples/worktree-development-loop/workflows/development-loop/execute.ts +1 -1
- package/assets/package.json +1 -1
- package/assets/packages/cli/src/generated-build-info.ts +2 -2
- package/dist/generated-build-info.d.ts +2 -2
- package/dist/generated-build-info.js +2 -2
- package/package.json +2 -2
package/assets/README.md
CHANGED
|
@@ -21,7 +21,7 @@ through the CLI from any harness. Agents run on the bundled
|
|
|
21
21
|
const summarize = workflow({
|
|
22
22
|
name: "summarize",
|
|
23
23
|
entrypoint: {
|
|
24
|
-
instructions: "
|
|
24
|
+
instructions: "Use when you need a saved summary of staged and unstaged tracked changes in a Git repository before review or handoff. Compares against HEAD, excludes untracked files, and does not edit the repository. Requires an existing commit and model access for nonempty diffs.",
|
|
25
25
|
},
|
|
26
26
|
args: Type.Object({ repositoryPath: Type.String({ minLength: 1 }) }),
|
|
27
27
|
async execute({ args, paths, commands, logs, agents, run }) {
|
package/assets/docs/workflows.md
CHANGED
|
@@ -29,7 +29,7 @@ import { Type } from "typebox";
|
|
|
29
29
|
|
|
30
30
|
export const greet = workflow({
|
|
31
31
|
name: "greet",
|
|
32
|
-
entrypoint: { instructions: "
|
|
32
|
+
entrypoint: { instructions: "Use when you need a personalized greeting returned as the run summary, without writing a file or calling a model." },
|
|
33
33
|
args: Type.Object({ name: Type.String() }),
|
|
34
34
|
execute({ args, run }) {
|
|
35
35
|
return run.complete({ summary: `Hello, ${args.name}!` });
|
|
@@ -43,7 +43,13 @@ Supply `name`, `args`, `entrypoint`, and `execute` explicitly. Use `entrypoint:
|
|
|
43
43
|
|
|
44
44
|
Workflow and scope names must be nonempty and cannot contain dots. A standalone workflow's ID is its name; a scoped workflow's ID is `<scope name>.<workflow name>`. Declarations expose the resolved `id`; CLI commands, references, and `run.next` use that exact ID, without implicit scope lookup.
|
|
45
45
|
|
|
46
|
-
`entrypoint.instructions`
|
|
46
|
+
`entrypoint.instructions` is a short capability-selection description, like a skill's short description—not an execution plan, a Norn agent system prompt, or a gate decision.
|
|
47
|
+
|
|
48
|
+
| Decision | GOOD | BAD |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| IF exposing an entrypoint, THEN lead with “Use when…” and the caller's need, followed by the useful result and only prerequisites, effects, or limits that affect selection. ELSE keep the step internal with `entrypoint: false`. | “Use when you need a source-grounded summary checked for unsupported claims. Saves a draft and an assessment; completion does not imply approval. Requires model access.” | “Call the draft agent, write JSON, then invoke the analysis workflow.” |
|
|
51
|
+
|
|
52
|
+
Declare args and config with [TypeBox schemas](schemas.md) rather than listing their fields in the description. Workflow inputs must be JSON data; `execute` receives the values after schema defaults and conversions. Public schemas must support `workflows inspect`.
|
|
47
53
|
|
|
48
54
|
Destructure the properties needed by the step from `execute(context)`. Gate descriptions receive the same inferred context:
|
|
49
55
|
|
|
@@ -24,7 +24,7 @@ const analysisSchema = Type.Object({
|
|
|
24
24
|
const scope = workflowScope({ name: "sourceSummary" });
|
|
25
25
|
export const draft = scope.workflow({
|
|
26
26
|
name: "draft",
|
|
27
|
-
entrypoint: { instructions: "
|
|
27
|
+
entrypoint: { instructions: "Use when you need a source-grounded summary checked for unsupported claims and omitted qualifications. Saves the draft and an independent assessment; a completed run may still report needs-revision. Requires model access." },
|
|
28
28
|
args: Type.Object({ source: Type.String({ minLength: 1 }) }),
|
|
29
29
|
async execute({ args, paths, agents }) {
|
|
30
30
|
const draft = await agents.prompt({
|
|
@@ -5,7 +5,7 @@ import { assessmentContributionSchema, headingsSchema, outlineContributionSchema
|
|
|
5
5
|
export const assessOutline = workflow({
|
|
6
6
|
name: "assessOutline",
|
|
7
7
|
entrypoint: {
|
|
8
|
-
instructions: "
|
|
8
|
+
instructions: "Use when you need to identify missing level-two headings in a Markdown outline before deciding whether to accept or revise it. Reports missing required headings to your continuation using exact, case-sensitive line matching; does not assess prose quality or decide acceptance.",
|
|
9
9
|
},
|
|
10
10
|
args: Type.Object({
|
|
11
11
|
...outlineContributionSchema.properties,
|
|
@@ -5,7 +5,7 @@ import { headingSchema, outlineContributionSchema } from "./contracts.ts";
|
|
|
5
5
|
export const appendHeading = workflow({
|
|
6
6
|
name: "appendHeading",
|
|
7
7
|
entrypoint: {
|
|
8
|
-
instructions: "
|
|
8
|
+
instructions: "Use when a Markdown outline needs one additional empty section before further processing. Appends the requested level-two heading and passes the revised outline to your continuation; does not write section content or assess the result.",
|
|
9
9
|
},
|
|
10
10
|
args: Type.Object({
|
|
11
11
|
...outlineContributionSchema.properties,
|
|
@@ -11,7 +11,7 @@ export const greetingContributionSchema = Type.Object({
|
|
|
11
11
|
const scope = workflowScope({ name: "greetingProducer" });
|
|
12
12
|
export const write = scope.workflow({
|
|
13
13
|
name: "write",
|
|
14
|
-
entrypoint: { instructions: "
|
|
14
|
+
entrypoint: { instructions: "Use when a later workflow needs a personalized greeting file and should decide what happens next. Passes the workspace-relative file path and summary to your continuation instead of completing the run." },
|
|
15
15
|
args: Type.Object({
|
|
16
16
|
name: Type.String({ minLength: 1 }),
|
|
17
17
|
next: workflowRefSchema({ args: greetingContributionSchema }),
|
|
@@ -13,7 +13,7 @@ const workerReportSchema = Type.Object({ status: Type.Enum(["acknowledged", "idl
|
|
|
13
13
|
const scope = workflowScope({ name: "coordinatingAgents" });
|
|
14
14
|
export const start = scope.workflow({
|
|
15
15
|
name: "start",
|
|
16
|
-
entrypoint: { instructions: "
|
|
16
|
+
entrypoint: { instructions: "Use when you need separate summaries of 2–12 notes processed concurrently with saved progress for recovery. Saves each summary with a checked verbatim source quotation; this checks quotation fidelity, not summary quality. Requires model access." },
|
|
17
17
|
args: inputSchema,
|
|
18
18
|
async execute({ args, paths }) {
|
|
19
19
|
const queue = await openQueue({ workspace: paths.workspace, create: true });
|
|
@@ -5,7 +5,7 @@ import { Type } from "typebox";
|
|
|
5
5
|
|
|
6
6
|
export const summarize = workflow({
|
|
7
7
|
name: "summarize",
|
|
8
|
-
entrypoint: { instructions: "
|
|
8
|
+
entrypoint: { instructions: "Use when you need a saved summary of staged and unstaged tracked changes in a Git repository before review or handoff. Compares against HEAD, excludes untracked files, and does not edit the repository. Requires an existing commit and model access for nonempty diffs." },
|
|
9
9
|
args: Type.Object({ repositoryPath: Type.String({ minLength: 1 }) }),
|
|
10
10
|
async execute({ args, paths, commands, logs, agents, run }) {
|
|
11
11
|
const diff = await commands.run({
|
|
@@ -5,7 +5,7 @@ import { Type } from "typebox";
|
|
|
5
5
|
|
|
6
6
|
export const write = workflow({
|
|
7
7
|
name: "greet",
|
|
8
|
-
entrypoint: { instructions: "
|
|
8
|
+
entrypoint: { instructions: "Use when you need a personalized greeting saved as a local file with no model or external service. Completes with the greeting text and workspace-relative file path." },
|
|
9
9
|
args: Type.Object({ name: Type.Decode(Type.String({ pattern: "\\S" }), value => value.trim()) }),
|
|
10
10
|
async execute({ args, paths, run }) {
|
|
11
11
|
const greeting = `Hello, ${args.name}!`;
|
|
@@ -11,7 +11,7 @@ const copyField = { id: "copiedText", schema: Type.String() };
|
|
|
11
11
|
|
|
12
12
|
export const copy = copyScope.workflow({
|
|
13
13
|
name: "copy",
|
|
14
|
-
entrypoint: { instructions: "
|
|
14
|
+
entrypoint: { instructions: "Use when you need to exercise an agent's access to explicitly shared state by copying a short string exactly. Saves a verified copy or fails on mismatch. Requires model access; not intended as a replacement for ordinary file copying." },
|
|
15
15
|
args: Type.Object({ source: Type.String({ minLength: 1, maxLength: 500 }) }),
|
|
16
16
|
async execute({ args, paths, agents }) {
|
|
17
17
|
const state = await SharedState.open({ path: join(paths.workspace, "state.sqlite"), create: true });
|
|
@@ -6,7 +6,7 @@ import { materializeWorkspaceRepository } from "./repository.ts";
|
|
|
6
6
|
|
|
7
7
|
export const developmentLoopWorkflow = developmentLoopScope.workflow({
|
|
8
8
|
name: "developmentLoop",
|
|
9
|
-
entrypoint: { instructions: "
|
|
9
|
+
entrypoint: { instructions: "Use when you want a repository task planned, implemented, and reviewed in a separate clone with a caller approval gate. Starts from committed content and retains changes for inspection without automatically merging or pushing results back. Requires Git, Bash, and model access." },
|
|
10
10
|
args: developmentLoopArgsSchema,
|
|
11
11
|
async execute({ args, scope, paths, commands }): Promise<WorkflowResult> {
|
|
12
12
|
const repositoryPath = await materializeWorkspaceRepository({ commands, paths, repositoryRoot: scope.config.repositoryRoot, baseRef: args.baseRef });
|
package/assets/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.1.0-tip.
|
|
1
|
+
{"version":"0.1.0-tip.35614826665.1"}
|
|
@@ -2,8 +2,8 @@ import type { NornBuildInfo } from "./build-info.ts";
|
|
|
2
2
|
|
|
3
3
|
export const NORN_GENERATED_BUILD_INFO = {
|
|
4
4
|
"kind": "npm-registry",
|
|
5
|
-
"version": "0.1.0-tip.
|
|
6
|
-
"commit": "
|
|
5
|
+
"version": "0.1.0-tip.35614826665.1",
|
|
6
|
+
"commit": "286e68533b1d26b5afbb0cba9d75f857fb85dc53",
|
|
7
7
|
"packageSpec": "@vimhead.dev/norn-cli@tip",
|
|
8
8
|
"upgrade": {
|
|
9
9
|
"supported": false,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const NORN_GENERATED_BUILD_INFO: {
|
|
2
2
|
readonly kind: "npm-registry";
|
|
3
|
-
readonly version: "0.1.0-tip.
|
|
4
|
-
readonly commit: "
|
|
3
|
+
readonly version: "0.1.0-tip.35614826665.1";
|
|
4
|
+
readonly commit: "286e68533b1d26b5afbb0cba9d75f857fb85dc53";
|
|
5
5
|
readonly packageSpec: "@vimhead.dev/norn-cli@tip";
|
|
6
6
|
readonly upgrade: {
|
|
7
7
|
readonly supported: false;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/generated-build-info.ts
|
|
2
2
|
var NORN_GENERATED_BUILD_INFO = {
|
|
3
3
|
"kind": "npm-registry",
|
|
4
|
-
"version": "0.1.0-tip.
|
|
5
|
-
"commit": "
|
|
4
|
+
"version": "0.1.0-tip.35614826665.1",
|
|
5
|
+
"commit": "286e68533b1d26b5afbb0cba9d75f857fb85dc53",
|
|
6
6
|
"packageSpec": "@vimhead.dev/norn-cli@tip",
|
|
7
7
|
"upgrade": {
|
|
8
8
|
"supported": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vimhead.dev/norn-cli",
|
|
3
|
-
"version": "0.1.0-tip.
|
|
3
|
+
"version": "0.1.0-tip.35614826665.1",
|
|
4
4
|
"description": "Harness-agnostic runtime for agent-driven and code-driven workflows, built primarily for agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
44
44
|
"jiti": "^2.7.0",
|
|
45
45
|
"typebox": "^1.3.34",
|
|
46
|
-
"@vimhead.dev/norn": "0.1.0-tip.
|
|
46
|
+
"@vimhead.dev/norn": "0.1.0-tip.35614826665.1"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"build": "node ../../scripts/build-package.ts"
|