@pome-sh/cli 0.15.0 → 0.16.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/dist/build-info.json +3 -3
- package/dist/src/cli/checks.d.ts +3 -2
- package/dist/src/cli/checks.js +22 -9
- package/node_modules/@pome-sh/twin-linear/CHANGELOG.md +41 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.d.ts +10 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js +117 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.d.ts +25 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js +211 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-kind.d.ts +3 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-kind.js +9 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-kind.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-params.d.ts +8 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-params.js +94 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-params.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.d.ts +98 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js +131 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-tape.d.ts +2 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-tape.js +100 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-tape.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-worlds.d.ts +44 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-worlds.js +93 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-worlds.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/checks.d.ts +29 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/checks.js +52 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/checks.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/index.d.ts +2 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/index.js +7 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/index.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/package.json +1 -1
- package/package.json +2 -2
- package/tasks/24-linear-issue-triage.md +2 -2
- package/tasks/25-linear-comment-label-triage.md +3 -3
- package/tasks/26-github-linear-handoff.md +3 -4
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
//
|
|
3
|
+
// The Linear twin's assertable check vocabulary (F-1129, milestone A3).
|
|
4
|
+
//
|
|
5
|
+
// These live HERE, next to the state they read, because the twin owns that
|
|
6
|
+
// state's shape. pome-cloud imports this module from npm and adapts each
|
|
7
|
+
// declaration onto its predicate engine, so there is no second copy to
|
|
8
|
+
// reconcile — only a pin that can fall behind, which is what its drift gate
|
|
9
|
+
// exists to catch. The cloud's `deterministic/linear.ts`, including its
|
|
10
|
+
// hand-maintained mirror of the state shape whose header records a manual
|
|
11
|
+
// audit "verified against source, 2026-07-25", is deleted in the same
|
|
12
|
+
// milestone. That audit is the artifact this file retires.
|
|
13
|
+
//
|
|
14
|
+
// Linear is the LAST of A3's four vocabularies, and the one that answered the
|
|
15
|
+
// two questions the earlier three left open:
|
|
16
|
+
//
|
|
17
|
+
// * A rendered sentence cannot carry a pronoun. Six of the nine shipped
|
|
18
|
+
// criteria named their subject with "that issue", with no subject at all,
|
|
19
|
+
// or by pointing at the seed. Under position 2 an author picks a check and
|
|
20
|
+
// fills its parameters, and `evaluate(args, substrate)` receives only its
|
|
21
|
+
// own args — so there is no mechanism by which "that issue" could resolve.
|
|
22
|
+
// Every check therefore takes an explicit title, and the three task files
|
|
23
|
+
// were rewritten to say so.
|
|
24
|
+
// * twin-github FAILS on a selector miss and twin-slack SKIPS. Linear does
|
|
25
|
+
// both, split by evidence rather than by taste — see `check-state.ts`.
|
|
26
|
+
//
|
|
27
|
+
// This file is the ASSEMBLY. Declarations group by what they assert about
|
|
28
|
+
// (`check-issues.ts`, `check-comments.ts`, `check-tape.ts`), with typed slots in
|
|
29
|
+
// `check-params.ts`, fixture worlds in `check-worlds.ts`, and the reading of the
|
|
30
|
+
// exported tree in `check-state.ts`.
|
|
31
|
+
import { issueCommentContains, issueThreadedReply } from "./check-comments.js";
|
|
32
|
+
import { issueAssignee, issueEstimate, issueExists, issueHasLabel, issueState, } from "./check-issues.js";
|
|
33
|
+
import { noUnsupportedEndpoint } from "./check-tape.js";
|
|
34
|
+
// Order is not first-match-wins — the generated patterns are anchored and
|
|
35
|
+
// mutually exclusive, and `checks-contract.test.ts` proves no sentence is
|
|
36
|
+
// claimed by two. It is the order an authoring surface lists them in, running
|
|
37
|
+
// from the assertion an author reaches for first to the ones a specialised task
|
|
38
|
+
// needs.
|
|
39
|
+
export const LINEAR_CHECKS = [
|
|
40
|
+
issueExists,
|
|
41
|
+
issueState,
|
|
42
|
+
issueHasLabel,
|
|
43
|
+
issueEstimate,
|
|
44
|
+
issueAssignee,
|
|
45
|
+
issueCommentContains,
|
|
46
|
+
issueThreadedReply,
|
|
47
|
+
// Last, because the listing order runs from the assertion an author reaches
|
|
48
|
+
// for first to the ones a specialised task needs — and this is the only one
|
|
49
|
+
// that reads the run rather than the world it left behind.
|
|
50
|
+
noUnsupportedEndpoint,
|
|
51
|
+
];
|
|
52
|
+
//# sourceMappingURL=checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/checks.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,wEAAwE;AACxE,0EAA0E;AAC1E,sEAAsE;AACtE,2DAA2D;AAC3D,EAAE;AACF,8EAA8E;AAC9E,6CAA6C;AAC7C,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,gCAAgC;AAChC,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,iFAAiF;AACjF,iFAAiF;AACjF,qCAAqC;AAErC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAaxD,0EAA0E;AAC1E,0EAA0E;AAC1E,8EAA8E;AAC9E,gFAAgF;AAChF,SAAS;AACT,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW;IACX,UAAU;IACV,aAAa;IACb,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,kBAAkB;IAClB,4EAA4E;IAC5E,4EAA4E;IAC5E,2DAA2D;IAC3D,qBAAqB;CACb,CAAC"}
|
|
@@ -12,5 +12,7 @@ export { exportLinearState, linearStateDelta } from "./state.js";
|
|
|
12
12
|
export type { LinearStateExport } from "./state.js";
|
|
13
13
|
export { createLinearTwinApp, createLinearTwinDefinition, withPublicOAuth, } from "./twin.js";
|
|
14
14
|
export { registerLinearRoutes } from "./routes.js";
|
|
15
|
+
export { LINEAR_CHECKS } from "./checks.js";
|
|
16
|
+
export type { Check, LinearCheckState, LinearCheckStateComment, LinearCheckStateIssue, LinearCheckStateLabel, LinearCheckStateTeam, LinearCheckStateUser, LinearCheckStateWorkflowState, } from "./checks.js";
|
|
15
17
|
export type { LinearStateSeed, LinearTwinDatabase, LinearIssue, LinearUser, LinearTeam, LinearComment, } from "./types.js";
|
|
16
18
|
export { DEFAULT_LINEAR_CLOCK, DEFAULT_LINEAR_EMAIL, DEFAULT_LINEAR_TOKEN, DEFAULT_LINEAR_SID, DEFAULT_LINEAR_PORT, LINEAR_PROVIDER_TOKEN_PREFIX, STATE_EXPORT_CAP, } from "./types.js";
|
|
@@ -10,5 +10,12 @@ export { defaultSeedState, linearSeedSchema, loadSeedFromEnv, parseSeed, } from
|
|
|
10
10
|
export { exportLinearState, linearStateDelta } from "./state.js";
|
|
11
11
|
export { createLinearTwinApp, createLinearTwinDefinition, withPublicOAuth, } from "./twin.js";
|
|
12
12
|
export { registerLinearRoutes } from "./routes.js";
|
|
13
|
+
// The declared check vocabulary (F-1129). Re-exported from the root as
|
|
14
|
+
// twin-slack does, alongside the `@pome-sh/twin-linear/checks` subpath that
|
|
15
|
+
// pome-cloud and the CLI both import. The `LinearCheckState*` types are a
|
|
16
|
+
// CHECK's reading of the exported tree, and are deliberately distinct from the
|
|
17
|
+
// `LinearIssue` / `LinearUser` / `LinearComment` row types below: the export
|
|
18
|
+
// carries `stateId` and `labelIds` where those carry names.
|
|
19
|
+
export { LINEAR_CHECKS } from "./checks.js";
|
|
13
20
|
export { DEFAULT_LINEAR_CLOCK, DEFAULT_LINEAR_EMAIL, DEFAULT_LINEAR_TOKEN, DEFAULT_LINEAR_SID, DEFAULT_LINEAR_PORT, LINEAR_PROVIDER_TOKEN_PREFIX, STATE_EXPORT_CAP, } from "./types.js";
|
|
14
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,SAAS,GACV,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,SAAS,GACV,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,uEAAuE;AACvE,4EAA4E;AAC5E,0EAA0E;AAC1E,+EAA+E;AAC/E,6EAA6E;AAC7E,4DAA4D;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmB5C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pome-sh/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Digital-twin testing for AI agents — run tasks against resettable local or hosted twins and record tool-call traces for evaluation on pome.sh.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"@pome-sh/shared-types": "0.13.0",
|
|
70
70
|
"@pome-sh/twin-gmail": "0.3.0",
|
|
71
71
|
"@pome-sh/twin-github": "0.7.0",
|
|
72
|
-
"@pome-sh/twin-linear": "0.
|
|
72
|
+
"@pome-sh/twin-linear": "0.2.0",
|
|
73
73
|
"@pome-sh/twin-slack": "0.3.0",
|
|
74
74
|
"@pome-sh/twin-stripe": "0.4.0",
|
|
75
75
|
"ai": "^7.0.18",
|
|
@@ -14,8 +14,8 @@ The agent lists issues (MCP or GraphQL), updates the backlog issue's state, and
|
|
|
14
14
|
creates one comment without contacting any live Linear endpoint.
|
|
15
15
|
|
|
16
16
|
## Success Criteria
|
|
17
|
-
- [code] Issue "Triage inbox for agent eval" is in state In Progress
|
|
18
|
-
- [code] A comment
|
|
17
|
+
- [code] Issue "Triage inbox for agent eval" in `ENG` is in state "In Progress"
|
|
18
|
+
- [code] A comment on issue "Triage inbox for agent eval" in `ENG` contains "triage"
|
|
19
19
|
- [model] The agent confirms the issue was updated and commented on
|
|
20
20
|
|
|
21
21
|
## Config
|
|
@@ -16,9 +16,9 @@ with `parentId`, ensures the label exists, attaches it with `save_issue`, and
|
|
|
16
16
|
sets `estimate` without contacting any live Linear endpoint.
|
|
17
17
|
|
|
18
18
|
## Success Criteria
|
|
19
|
-
- [code] Issue "Needs comment and label triage" has estimate 2
|
|
20
|
-
- [code] Issue has label "Needs triage"
|
|
21
|
-
- [code] A reply comment exists
|
|
19
|
+
- [code] Issue "Needs comment and label triage" in `ENG` has estimate 2
|
|
20
|
+
- [code] Issue "Needs comment and label triage" in `ENG` has label "Needs triage"
|
|
21
|
+
- [code] A threaded reply to a seeded comment exists on issue "Needs comment and label triage" in `ENG`
|
|
22
22
|
- [model] The agent confirms the threaded reply, label, and estimate were applied
|
|
23
23
|
|
|
24
24
|
## Config
|
|
@@ -17,10 +17,9 @@ GitHub or Linear.
|
|
|
17
17
|
|
|
18
18
|
## Success Criteria
|
|
19
19
|
- [code:github] Issue #1 in `acme/api` is in state open
|
|
20
|
-
- [code:linear]
|
|
21
|
-
- [code:linear]
|
|
22
|
-
- [code:linear]
|
|
23
|
-
- [code:linear] A comment exists on that issue mentioning GitHub issue #1
|
|
20
|
+
- [code:linear] Issue "Orders 500 after deploy" in `ENG` is in state "In Progress"
|
|
21
|
+
- [code:linear] Issue "Orders 500 after deploy" in `ENG` has label "Agent"
|
|
22
|
+
- [code:linear] A comment on issue "Orders 500 after deploy" in `ENG` contains "#1"
|
|
24
23
|
- [model] The Linear issue clearly handoffs the GitHub orders bug without inventing unrelated work
|
|
25
24
|
|
|
26
25
|
## Config
|