@pipod/cli 0.1.20 → 0.1.21

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.
@@ -3,7 +3,8 @@
3
3
  `pipod ls` (also `pipod list`) reads every page before applying display filters or
4
4
  rendering the oldest-activity-first tree. Quiet output contains each full pod ID
5
5
  once. Project, template, account and machine-group scopes use the same page walk;
6
- so do short-ref/name resolution and bulk archive/restore/GC selection.
6
+ so does bulk archive/restore/GC selection. Short-ref/name resolution uses the
7
+ bounded lookup below; only an older server without that route uses pagination.
7
8
 
8
9
  ## API contract
9
10
 
@@ -29,6 +30,32 @@ pod ahead of an already-read boundary. The CLI deduplicates IDs if it sees a pod
29
30
  again and fails explicitly on a repeated cursor rather than reporting a silently
30
31
  truncated roster. Rerun a listing after concurrent activity for a fresh view.
31
32
 
33
+ ## Pod-reference lookup
34
+
35
+ `GET /v1/pods/by-ref/:ref` resolves a short reference or exact name within the
36
+ caller's own pods, including archived pods but excluding gone rows. Pod tokens
37
+ are additionally limited to their own subtree. Matching uses the same shared
38
+ parser as the CLI: case-sensitive exact names precede hexadecimal references;
39
+ `p-`/`j-` references match UUID tails, and bare hex matches legacy leading prefixes
40
+ or tails. Short hex references require at least four characters. Exact names can
41
+ still contain text that would otherwise be an invalid short reference.
42
+
43
+ The response is `{ pod, matches, total }`. A unique result includes one full pod;
44
+ no match returns `pod: null, matches: [], total: 0`. Ambiguity returns no full pod,
45
+ the exact total, and at most twenty `{ id, name, state }` choices. It never sends
46
+ the account's launch reports just to resolve one reference. All values are bound
47
+ SQL parameters, and lookup does not grant permission to perform an action.
48
+
49
+ A full UUID continues to use the ordinary single-pod route. Only a 404 from the
50
+ new route triggers the CLI's old-server pagination fallback; auth, validation,
51
+ network and server failures do not. Missing matches on a supporting server are
52
+ 200 responses, not capability failures.
53
+
54
+ Attach also shares one in-flight semantic model catalog between catalog and
55
+ thinking-level consumers and overlaps independent auth/thinking initialization.
56
+ It still validates readiness, settings and extension trust before accepting input;
57
+ there is no persistent model cache or new classic-RPC passthrough.
58
+
32
59
  ## Manual acceptance (no unit tests)
33
60
 
34
61
  Use an explicit disposable migrated database, never a production fixture insert.
@@ -45,6 +72,14 @@ Run the actual pod routes over loopback HTTP and the built CLI by absolute path:
45
72
  hide active pods on later pages. Check quiet and rendered output.
46
73
  - Delete the last pod of one page, then follow its cursor successfully.
47
74
  - Malformed cursor and simultaneous `cursor`/`before` return 400.
75
+ - Resolve short refs and names against more than 800 history rows without any
76
+ roster requests. Check exact-name precedence, case-insensitive hex, minimum
77
+ length, prefix/tail collisions, archived/gone rows, owner/org isolation and
78
+ pod-token lineage. Ambiguity must return the exact count but at most twenty
79
+ metadata choices, never a full report for each match.
80
+ - A missing lookup route falls back to the old paginated selection. A missing
81
+ match, invalid reference, 401/403, network failure or 5xx must not trigger that
82
+ fallback. Full UUIDs still go directly to the single-pod route.
48
83
  - A legacy server omitting `nextCursor` is still traversed with `before`.
49
84
  A server repeating a cursor fails without printing an incomplete quiet roster.
50
85
 
@@ -1,4 +1,4 @@
1
- .TH "PIPOD\-CONFIG" "5" "October 2026" "0.1.20"
1
+ .TH "PIPOD\-CONFIG" "5" "November 2026" "0.1.21"
2
2
  .SH "NAME"
3
3
  \fBpipod-config\fR \- pi pod configuration files
4
4
  .SH SYNOPSIS
package/man/pipod.1 CHANGED
@@ -1,4 +1,4 @@
1
- .TH "PIPOD" "1" "October 2026" "0.1.20"
1
+ .TH "PIPOD" "1" "November 2026" "0.1.21"
2
2
  .SH "NAME"
3
3
  \fBpipod\fR \- run pi coding\-agent sessions in server\-managed pods
4
4
  .SH SYNOPSIS
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@pipod/cli",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@pipod/cli",
9
- "version": "0.1.20",
9
+ "version": "0.1.21",
10
10
  "license": "AGPL-3.0-only",
11
11
  "dependencies": {
12
12
  "@earendil-works/pi-coding-agent": "1.0.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipod/cli",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "description": "Run pi coding-agent sessions in server-managed pods",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",