framer-dalton 0.0.22 → 0.0.23

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/cli.js CHANGED
@@ -10,7 +10,7 @@ import os from 'os';
10
10
  import { fileURLToPath } from 'url';
11
11
  import { createTRPCClient, httpLink } from '@trpc/client';
12
12
 
13
- /* @framer/ai CLI v0.0.22 */
13
+ /* @framer/ai CLI v0.0.23 */
14
14
  var __defProp = Object.defineProperty;
15
15
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
16
16
 
@@ -328,7 +328,7 @@ __name(markTelemetryNoticeShown, "markTelemetryNoticeShown");
328
328
  // src/version.ts
329
329
  var VERSION = (
330
330
  // typeof is used to ensure this can be used just via tsx or node etc. without build
331
- "0.0.22"
331
+ "0.0.23"
332
332
  );
333
333
  var trackingEndpoint = "https://events.framer.com/track";
334
334
  var inProgressTrackings = /* @__PURE__ */ new Set();
@@ -6293,6 +6293,12 @@ var types = {
6293
6293
  description: "@alpha",
6294
6294
  optional: false
6295
6295
  },
6296
+ {
6297
+ name: "unstable_getDependencyVersion",
6298
+ type: 'FramerPluginAPIAlpha["unstable_getDependencyVersion"]',
6299
+ description: "@alpha",
6300
+ optional: false
6301
+ },
6296
6302
  {
6297
6303
  name: "unstable_ensureMinimumDependencyVersion",
6298
6304
  type: 'FramerPluginAPI["unstable_ensureMinimumDependencyVersion"]',
@@ -7205,6 +7211,24 @@ var types = {
7205
7211
  description: "@alpha",
7206
7212
  optional: false
7207
7213
  },
7214
+ {
7215
+ name: "serializeForAgent",
7216
+ type: "(input: {\n id: string;\n depth?: number;\n attributeFilter?: readonly string[];\n ancestorPath?: boolean;\n }, options?: {\n pagePath?: string;\n }) => Promise<unknown>",
7217
+ description: "@alpha",
7218
+ optional: false
7219
+ },
7220
+ {
7221
+ name: "serializeNodesForAgent",
7222
+ type: "(input: {\n ids: readonly string[];\n depth?: number;\n attributeFilter?: readonly string[];\n ancestorPath?: boolean;\n }, options?: {\n pagePath?: string;\n }) => Promise<unknown>",
7223
+ description: "@alpha",
7224
+ optional: false
7225
+ },
7226
+ {
7227
+ name: "paginateForAgent",
7228
+ type: "(input: {\n items: readonly unknown[];\n keyName?: never;\n cursor?: never;\n } | {\n keyName: string;\n cursor: number;\n items?: never;\n }, options?: {\n pagePath?: string;\n }) => Promise<unknown>",
7229
+ description: "@alpha",
7230
+ optional: false
7231
+ },
7208
7232
  {
7209
7233
  name: "startAgentConversation",
7210
7234
  type: "(prompt: string, options?: StartAgentConversationOptions) => Promise<StartAgentConversationResult>",
@@ -13092,6 +13116,13 @@ var methodsByCategory = {
13092
13116
  description: 'Converts an external component into a local project component.\n\n@param input - `{ id, replaceAll? }`: the id of the external instance, and whether to replace all instances.\n@param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.\n@returns `success` (with the local component name), `needs_confirmation` (retry with `replaceAll`), or `blocked` with a reason.',
13093
13117
  references: []
13094
13118
  },
13119
+ {
13120
+ name: "[$framerApiOnly.paginateForAgent]",
13121
+ category: "framer",
13122
+ signature: "[$framerApiOnly.paginateForAgent](input: { items: readonly unknown[]; keyName?: never; cursor?: never; } | { keyName: string; cursor: number; items?: never; }, options?: { pagePath?: string; }): Promise<unknown>",
13123
+ description: 'Paginate a large array of values across multiple calls. The cursor is\nopaque and only valid within the same headless session and page.\n\n- First page: pass `{ items }`.\n- Continuation: pass `{ keyName, cursor }` using values returned by a previous call.\n\n@param input - `{ items }` for a fresh array, or `{ keyName, cursor }` for continuation.\n@param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.\n@returns The current page, including `keyName`, `cursor`, `results`, `totalResults`, and (if more pages remain) `nextCursor`.',
13124
+ references: []
13125
+ },
13095
13126
  {
13096
13127
  name: "[$framerApiOnly.publishForAgent]",
13097
13128
  category: "framer",
@@ -13120,6 +13151,20 @@ var methodsByCategory = {
13120
13151
  description: "Reviews changes made by prior {@link applyAgentChanges} calls in this session.\n\nConsumes accumulated diagnostics from the session's agent context.\n\n@param options.pagePath - Target page path (e.g. `\"/about\"`). Defaults to the active page.\n@returns The session's accumulated changes, errors, warnings, and deferred trait reports.",
13121
13152
  references: []
13122
13153
  },
13154
+ {
13155
+ name: "[$framerApiOnly.serializeForAgent]",
13156
+ category: "framer",
13157
+ signature: "[$framerApiOnly.serializeForAgent](input: { id: string; depth?: number; attributeFilter?: readonly string[]; ancestorPath?: boolean; }, options?: { pagePath?: string; }): Promise<unknown>",
13158
+ description: 'Serialize a single node on the page.\n\n@param input - `{ id }` plus optional serialization options:\n - `depth` \u2014 limit how many descendant levels to include.\n - `attributeFilter` \u2014 only return the listed attributes per node.\n - `ancestorPath` \u2014 also return the path of ancestors up to the page root.\n@param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.\n@returns The serialized node, or `null` if no node with that id exists on the page.',
13159
+ references: []
13160
+ },
13161
+ {
13162
+ name: "[$framerApiOnly.serializeNodesForAgent]",
13163
+ category: "framer",
13164
+ signature: "[$framerApiOnly.serializeNodesForAgent](input: { ids: readonly string[]; depth?: number; attributeFilter?: readonly string[]; ancestorPath?: boolean; }, options?: { pagePath?: string; }): Promise<unknown>",
13165
+ description: 'Serialize multiple nodes on the page. Ids that don\'t resolve to a node are skipped.\n\n@param input - `{ ids }` plus optional serialization options:\n - `depth` \u2014 limit how many descendant levels to include.\n - `attributeFilter` \u2014 only return the listed attributes per node.\n - `ancestorPath` \u2014 also return the path of ancestors up to the page root.\n@param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.\n@returns The serialized nodes that were found, in input order.',
13166
+ references: []
13167
+ },
13123
13168
  {
13124
13169
  name: "[$framerInternal.initialState]",
13125
13170
  category: "framer",
@@ -13651,6 +13696,13 @@ var methodsByCategory = {
13651
13696
  description: 'Get the current mode.\n\nA plugin can launch in a special mode where only a subset of the API is\nallowed. The mode is set when the plugin launches and never changes while\nthe plugin is active.\n\n@example\n```ts\nif (framer.mode === "image" || framer.mode === "editImage") {\n // Do image mode specific logic\n return\n}\n```\n@category settings',
13652
13697
  references: ["Mode"]
13653
13698
  },
13699
+ {
13700
+ name: "paginateForAgent",
13701
+ category: "framer",
13702
+ signature: "paginateForAgent(input: { items: readonly unknown[]; keyName?: never; cursor?: never; } | { keyName: string; cursor: number; items?: never; }, options?: { pagePath?: string; }): Promise<unknown>",
13703
+ description: 'Paginate a large array of values across multiple calls. The cursor is\nopaque and only valid within the same headless session and page.\n\n- First page: pass `{ items }`.\n- Continuation: pass `{ keyName, cursor }` using values returned by a previous call.\n\n@param input - `{ items }` for a fresh array, or `{ keyName, cursor }` for continuation.\n@param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.\n@returns The current page, including `keyName`, `cursor`, `results`, `totalResults`, and (if more pages remain) `nextCursor`.',
13704
+ references: []
13705
+ },
13654
13706
  {
13655
13707
  name: "publish",
13656
13708
  category: "framer",
@@ -13731,6 +13783,20 @@ var methodsByCategory = {
13731
13783
  description: "",
13732
13784
  references: ["ScreenshotOptions", "ScreenshotResult"]
13733
13785
  },
13786
+ {
13787
+ name: "serializeForAgent",
13788
+ category: "framer",
13789
+ signature: "serializeForAgent(input: { id: string; depth?: number; attributeFilter?: readonly string[]; ancestorPath?: boolean; }, options?: { pagePath?: string; }): Promise<unknown>",
13790
+ description: 'Serialize a single node on the page.\n\n@param input - `{ id }` plus optional serialization options:\n - `depth` \u2014 limit how many descendant levels to include.\n - `attributeFilter` \u2014 only return the listed attributes per node.\n - `ancestorPath` \u2014 also return the path of ancestors up to the page root.\n@param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.\n@returns The serialized node, or `null` if no node with that id exists on the page.',
13791
+ references: []
13792
+ },
13793
+ {
13794
+ name: "serializeNodesForAgent",
13795
+ category: "framer",
13796
+ signature: "serializeNodesForAgent(input: { ids: readonly string[]; depth?: number; attributeFilter?: readonly string[]; ancestorPath?: boolean; }, options?: { pagePath?: string; }): Promise<unknown>",
13797
+ description: 'Serialize multiple nodes on the page. Ids that don\'t resolve to a node are skipped.\n\n@param input - `{ ids }` plus optional serialization options:\n - `depth` \u2014 limit how many descendant levels to include.\n - `attributeFilter` \u2014 only return the listed attributes per node.\n - `ancestorPath` \u2014 also return the path of ancestors up to the page root.\n@param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.\n@returns The serialized nodes that were found, in input order.',
13798
+ references: []
13799
+ },
13734
13800
  {
13735
13801
  name: "sessionId",
13736
13802
  category: "framer",
@@ -13,7 +13,7 @@ import { connect } from 'framer-api';
13
13
  import { createRequire } from 'module';
14
14
  import * as vm from 'vm';
15
15
 
16
- /* @framer/ai relay server v0.0.22 */
16
+ /* @framer/ai relay server v0.0.23 */
17
17
  var __defProp = Object.defineProperty;
18
18
  var __knownSymbol = (name2, symbol) => (symbol = Symbol[name2]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name2);
19
19
  var __typeError = (msg) => {
@@ -159,7 +159,7 @@ __name(debug, "debug");
159
159
  // src/version.ts
160
160
  var VERSION = (
161
161
  // typeof is used to ensure this can be used just via tsx or node etc. without build
162
- "0.0.22"
162
+ "0.0.23"
163
163
  );
164
164
 
165
165
  // src/relay-client.ts
@@ -16,7 +16,7 @@ allowed-tools: ["Bash(npx framer-dalton:*)", "Bash(npx framer-dalton@latest:*)",
16
16
  - `read-project` and `apply-changes` are one-liner CLI shortcuts for the high-frequency canvas-editing methods. Use them to read state and apply DSL inline without writing a file first:
17
17
  - `npx framer-dalton read-project -s <sessionId> -q <queries> -p <pagePath>` — equivalent to `framer.readProjectForAgent(queries, { pagePath })`. Query types are documented in the embedded prompt below.
18
18
  - `npx framer-dalton apply-changes -s <sessionId> -p <pagePath> -e <dsl>` — equivalent to `framer.applyAgentChanges(dsl, { pagePath })`.
19
- - The embedded prompt below also references other agent-surface methods (`reviewChangesForAgent`, `publishForAgent`, `queryImagesForAgent`, `flattenComponentInstanceForAgent`, `makeExternalComponentLocalForAgent`, and `getNodeForAgent` / `getNodesForAgent` / `getNodesOfTypesForAgent` / `getScopeNodeForAgent` / `getGroundNodeForAgent` / `getParentNodeForAgent` / `getAncestorsForAgent`). These have no dedicated shortcut; invoke via `npx framer-dalton exec -s <sessionId> -e 'console.log(await framer.<method>(<args>))'`.
19
+ - The embedded prompt below also references other agent-surface methods (`reviewChangesForAgent`, `publishForAgent`, `queryImagesForAgent`, `flattenComponentInstanceForAgent`, `makeExternalComponentLocalForAgent`, `getNodeForAgent` / `getNodesForAgent` / `getNodesOfTypesForAgent` / `getScopeNodeForAgent` / `getGroundNodeForAgent` / `getParentNodeForAgent` / `getAncestorsForAgent`, and `serializeForAgent` / `serializeNodesForAgent` / `paginateForAgent`). These have no dedicated shortcut; invoke via `npx framer-dalton exec -s <sessionId> -e 'console.log(await framer.<method>(<args>))'`.
20
20
 
21
21
  ## Workflow Loop
22
22
 
@@ -438,6 +438,5 @@ await collection.setPluginData("lastSync", new Date().toISOString());
438
438
  ### Known Limitations
439
439
 
440
440
  - **Pages**: Cannot change the path of a page
441
- - **Collection Index/Detail Pages**: Cannot be created as new pages; the user must create them through the UI. Once they exist, they can be modified normally through canvas editing.
442
441
  - **Code overrides**: Cannot assign overrides to nodes
443
442
  - **Analytics**: No APIs exist for accessing analytics data
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framer-dalton",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "type": "module",
5
5
  "bin": "./dist/cli.js",
6
6
  "main": "./dist/cli.js",
@@ -23,7 +23,7 @@
23
23
  "@trpc/client": "^11.9.0",
24
24
  "@trpc/server": "^11.9.0",
25
25
  "commander": "^12.1.0",
26
- "framer-api": "^0.1.8",
26
+ "framer-api": "^0.1.9",
27
27
  "zod": "^4.3.6"
28
28
  },
29
29
  "devDependencies": {