@plitzi/plitzi-builder 0.38.15 → 0.38.16

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/CHANGELOG.md CHANGED
@@ -1,5 +1,81 @@
1
1
  # @plitzi/plitzi-builder
2
2
 
3
+ ## 0.38.16
4
+
5
+ ### Patch Changes
6
+
7
+ - 9cfdccb: ## Security
8
+
9
+ - **A site's credential reads nothing of the space over MCP** (`@plitzi/sdk-mcp`): the `render` token every published
10
+ page embeds — and a self-hosting `host` key — resolved to a grant naming the space, and the MCP served every read
11
+ under it: the unpublished draft, the change history with who made each change and every value before and after, the
12
+ functions' source, the space's private data, its action documents and connectors. Only an `agent` grant attaches a
13
+ space now; any other is a connection with no space (`plitzi_render` and the public guides), told so in the words
14
+ `NO_SPACE_ATTACHED` already uses. A deployment whose `getGrant` answered other scopes for reading must issue agent
15
+ grants for them.
16
+
17
+ ## Agents
18
+ - **`plitzi space watch`** (`@plitzi/cli`): the space read again on every save of `src/space/`, `src/plugins/`,
19
+ `src/data/` or `public/data/`, and only what changed said — what the save did to the space element by element, the
20
+ findings and warnings it brought and fixed (one that only moved down its file is the same one), a save that changed
21
+ nothing, or that the space stopped authoring and why. `--json` is one event a line (`ready`, `pass`, `refused`,
22
+ `error`), for an agent to run in the background instead of `author` and `space lint` after every edit. Each pass reads
23
+ the space in a process of its own (`space watch-pass`, hidden). `space lint`'s reading is `spaceFindings`, shared.
24
+ - **A space's activity, followed** (`@plitzi/sdk-shared`, `@plitzi/sdk-mcp`, `@plitzi/cli`): what happened on a space
25
+ after a cursor — its draft changed (a person in the builder, an agent, the autofix), a version went out, a server
26
+ action failed or was refused — and, with nothing yet, waited for, up to 50 s. One vocabulary,
27
+ `@plitzi/sdk-shared/activity` (`SpaceActivity`, `SpaceActivityPage`, `activityLine`, `isSpaceActivityPage`, the
28
+ limits); the reader's own writes left out and counted (`skippedMine`), `mine` keeps them.
29
+ - **`plitzi_activity { after, wait, limit, mine }`** (`@plitzi/sdk-mcp`), on the new `getActivity` adapter
30
+ (`SSRAdapters`). The listing budget is 78k (was 77k) for it.
31
+ - **`plitzi space activity [--follow] [--after <cursor>] [--mine] [--limit <n>] [--json]`** (`@plitzi/cli`), over
32
+ the platform's `GET /spaces/:spaceId/activity`; `--follow` stays, one page a line with `--json`, and asks again
33
+ when the platform does not answer.
34
+ - **The people in the builder see the agent work** (`@plitzi/sdk-server`, `@plitzi/sdk-shared`, `@plitzi/sdk-mcp`,
35
+ `@plitzi/plitzi-builder`): an agent grant carries the application the member connected (`Grant.client`,
36
+ `StoredSpaceToken.client`, `SSRGrant.client`), and every MCP write `SSRWriteContext.client` — the history's
37
+ `client` for an agent, which was never set. A collaborator may be an agent (`SubscriptionCollaborator.agent`): the
38
+ builder draws it as a robot, names it `Claude · for ana` (`collaboratorTitle`) in the header, on the canvas and in
39
+ its notices. The deployment announces it — Plitzi's joins it on a write, selects what it changed, and lets it go
40
+ after a minute of nothing. `activityLine` names it the same way (`Claude for ana over the MCP, …`), so
41
+ `plitzi space activity` says which application wrote.
42
+ - A tool may declare `documents: false` (`ToolSpec`): the host loads none of the space for it, and passes the call's
43
+ abort signal through `ToolContext.activity`.
44
+
45
+ ## Authoring
46
+ - **A file that does not parse is said at its line under any loader** (`@plitzi/sdk-authoring`): `moduleProblem` read
47
+ the first line of the error, and an esbuild transform (tsx, vitest) puts only `Transform failed with 1 error:` there
48
+ — the file, line and what is wrong are on the next. A line of the message that points at a file of the project is
49
+ now the problem (`src/space/hero.ts:139: Expected "}" but found ";"`), the project's root matched as given and as it
50
+ is on disk (`/var/…` and `/private/var/…` on macOS).
51
+
52
+ ## Testing
53
+ - **`unusedPort` is chosen where the system never hands one out** (`@plitzi/sdk-server`): it answered a port the system
54
+ had just handed out (`listen(0)`), from the ephemeral range every outgoing connection takes its local port from — so
55
+ another worker's request could take it before the test listened, and CI failed `runtime.test.ts` with `EADDRINUSE`
56
+ (the page server then ends the process). It is a free port below that range now, at random, checked first.
57
+
58
+ ## Docs
59
+ - **A self-hosted runtime's endpoints go in `data`**, as 0.38.15 moved them: `docs/en/runtimes.md`, the
60
+ `10-runtime` example and the website still put `served.stage` in `preAuth`, before the cross-site guard.
61
+ - New: `docs/en/activity.md`; `space watch` in `docs/en/agent-tooling.md`'s loop; the CLI README, the CLI skill, the
62
+ generated project's `AGENTS.md`, the MCP guide and README.
63
+
64
+ - Updated dependencies [9cfdccb]
65
+ - @plitzi/plitzi-sdk@0.38.16
66
+ - @plitzi/sdk-auth@0.38.16
67
+ - @plitzi/sdk-authoring@0.38.16
68
+ - @plitzi/sdk-dev-tools@0.38.16
69
+ - @plitzi/sdk-elements@0.38.16
70
+ - @plitzi/sdk-event-bridge@0.38.16
71
+ - @plitzi/sdk-interactions@0.38.16
72
+ - @plitzi/sdk-navigation@0.38.16
73
+ - @plitzi/sdk-plugins@0.38.16
74
+ - @plitzi/sdk-schema@0.38.16
75
+ - @plitzi/sdk-shared@0.38.16
76
+ - @plitzi/sdk-style@0.38.16
77
+ - @plitzi/sdk-variables@0.38.16
78
+
3
79
  ## 0.38.15
4
80
 
5
81
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import { SubscriptionCollaboratorElementState } from '@plitzi/sdk-shared';
1
+ import { SubscriptionCollaborator, SubscriptionCollaboratorElementState } from '@plitzi/sdk-shared';
2
2
  /**
3
3
  * The coordinate protocol between collaborators, both ends of it in one place.
4
4
  *
@@ -51,3 +51,8 @@ declare const resolveElementState: (elementState: SubscriptionCollaboratorElemen
51
51
  selected: string | undefined;
52
52
  };
53
53
  export { collaboratorAnchorSelector, readCursorAnchor, resolveCursorPosition, resolveElementState };
54
+ /**
55
+ * What a collaborator is called on the canvas, in the header and in the notices: a person by their name, an agent by
56
+ * its application and whom it works for (`Claude · for ana`).
57
+ */
58
+ export declare const collaboratorTitle: ({ user, agent }: Pick<SubscriptionCollaborator, "user" | "agent">) => string;
@@ -4,7 +4,10 @@ export type CollaboratorAvatarProps = {
4
4
  color?: string;
5
5
  firstName: string;
6
6
  surName: string;
7
+ /** An agent writing over the MCP: drawn as one, not as a person's initials. */
8
+ agent?: boolean;
9
+ title?: string;
7
10
  };
8
- /** The collaborator's initials in their presence color, as shown in the app header. */
9
- declare const CollaboratorAvatar: ({ ref, color, firstName, surName }: CollaboratorAvatarProps) => import('react').JSX.Element;
11
+ /** The collaborator's initials in their presence color, as shown in the app header — or, for an agent, a robot. */
12
+ declare const CollaboratorAvatar: ({ ref, color, firstName, surName, agent, title }: CollaboratorAvatarProps) => import('react').JSX.Element;
10
13
  export default CollaboratorAvatar;
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  "name": "@plitzi/plitzi-builder",
3
- "version": "0.38.15",
3
+ "version": "0.38.16",
4
4
  "homepage": "./",
5
5
  "license": "AGPL-3.0",
6
6
  "files": [