pi-revit 0.5.0 → 0.5.2

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.
@@ -1,271 +1,191 @@
1
- # PI-Revit guidance and tool architecture
2
-
3
- This document defines the implemented structure and how to extend it. It replaces
4
- one long operational skill with focused resources and explicit discovery. The five
5
- responsibilities below are PI-Revit's design, not a requirement imposed by Pi and
6
- not a demonstrated performance improvement. Contributor instructions live in
7
- [root AGENTS.md](../AGENTS.md); runtime task guidance starts at
8
- [the PI-Revit skill](../skills/pi-revit/SKILL.md).
9
-
10
- ## Resource scope and resource type
11
-
12
- **Global versus project** describes where instructions/resources are discovered
13
- and apply. **Instructions, skills, tools, templates and packages** describe what
14
- they do. These are separate axes: a globally installed skill is not automatically
15
- an always-loaded global instruction file.
16
-
17
- Pi's context files provide persistent instructions in their applicable scope.
18
- Skills expose task descriptions for selection; reading their body and supporting
19
- files is a separate action. Prompt templates are reusable requests. Extensions
20
- are Pi's standard mechanism for adding model-callable tools and runtime behavior;
21
- skills can invoke helper scripts through existing tools. Packages distribute these
22
- resources and do not define a new instruction priority or workflow engine.
23
-
24
- The implementation was checked against Pi 0.87.0. See its versioned
25
- [skills documentation](https://github.com/earendil-works/pi/blob/v0.87.0/packages/coding-agent/docs/skills.md),
26
- [extension documentation](https://github.com/earendil-works/pi/blob/v0.87.0/packages/coding-agent/docs/extensions.md),
27
- [package documentation](https://github.com/earendil-works/pi/blob/v0.87.0/packages/coding-agent/docs/packages.md),
28
- and [context-file documentation](https://github.com/earendil-works/pi/blob/v0.87.0/packages/coding-agent/README.md).
29
- Recheck supported Pi behavior when upgrading. The model may omit a relevant skill
30
- or reference; critical enforcement therefore stays in executable code.
31
-
32
- ## Platform layer and five responsibilities
33
-
34
- Problems are fixed as classes, at the lowest layer where every present and future
35
- resource inherits the fix. Each fix combines a mechanism in code or declared metadata,
36
- a CI gate that makes a non-compliant addition fail, and an agent-evaluation scenario:
1
+ # PI-Revit runtime architecture
2
+
3
+ PI-Revit connects Pi to Autodesk Revit through a local bridge. The package includes
4
+ the bridge source, the Pi extension, searchable tool contracts, operating guidance,
5
+ and the scripts needed to build and install it on Windows.
6
+
7
+ ## Runtime layers
37
8
 
38
9
  ```text
39
- L5 Gates (npm run test:docs) and agent evaluation (tests/agent-eval)
40
- L4 Guidance: one router skill, protocols stated once, manuals with generated contracts
41
- L3 Shared bridge primitives: ParameterResolver, ElementTraits, InheritedState, ElementNames,
42
- ModelEditBatch, DocumentGuard; the dispatcher attaches model_changes to every write
43
- L2 Resource contract v2: keywords, limits with alternatives, verification, effects
44
- L1 Platform runtime in the Pi extension: acts on metadata, never on tool names
10
+ Pi session
11
+ ├── extension: discovery, session routing, results and operation receipts
12
+ └── skill and manuals: task guidance and tool contracts
13
+ │ authenticated localhost HTTP
14
+ ▼
15
+ Revit bridge add-in
16
+ ├── tool registry and input contracts
17
+ ├── ExternalEvent queue for Revit API work
18
+ ├── shared document and transaction safeguards
19
+ └── tool implementations
20
+ │
21
+ ▼
22
+ Selected Revit document
45
23
  ```
46
24
 
47
- L1 therefore covers a tool that a future bridge advertises and this package has never
48
- seen. A tool without declared metadata is treated conservatively: its limits are
49
- "unknown", which leads to the API check rather than a refusal.
25
+ The add-in is headless: it creates no ribbon or panels. Revit API work runs on
26
+ Revit's API thread through the queue. The bridge binds to loopback and creates a
27
+ new authentication token each time it starts. Discovery records live under
28
+ `%APPDATA%\RevitBridge`, including separate instance records and a legacy
29
+ `bridge.json`. These records belong to the local installation, not the package.
50
30
 
51
- | Responsibility | Owner | Load/use when |
52
- | --- | --- | --- |
53
- | Cross-cutting protocols | The platform section injected by `platform-prompt.ts` through `before_agent_start`, always in context | Every request, whether or not the skill is read |
54
- | Operating rules | Short `skills/pi-revit/SKILL.md`, shared execution/recovery/visual references | Task routing; model work; uncertainty; visible output respectively |
55
- | Tool contracts | Runtime schemas and implementations, plus declared keywords, limits and verification; `references/tools/<name>.md` explains each, with a generated Contract block | A relevant tool is selected or explained |
56
- | Revit knowledge | Future scoped subject skills and cited Autodesk Help references | A modeling concept or domain task needs explanation |
57
- | Workflows | Room-documentation and model-audit/export references, indexed as guidance | Coordinating several operations into a requested outcome |
58
- | API reference | `search_api_docs`, followed by inspection/compilation as appropriate | A custom script uses unfamiliar API members, or no dedicated tool covers a request |
31
+ The HTTP bridge is local to the computer. Pi can send conversation context and
32
+ tool results to the selected model provider; local transport does not mean that
33
+ model information remains offline.
59
34
 
60
- The domain library is deliberately not filled with empty placeholders or copied
61
- tool contracts. It can grow under `skills/revit-<subject>/` in this package, and
62
- discovery finds any sibling skill automatically. A later `revit-skills` package is
63
- optional when ownership/versioning warrant it, not required to make references work.
35
+ ## Distributed resources
64
36
 
65
- ```text
66
- pi-revit/ repository and installable package
67
- ├── AGENTS.md source contributor instructions
68
- ├── docs/
69
- │ ├── architecture.md structure, ownership and extension rules
70
- │ ├── evaluation.md checks, evidence and remaining evaluation
71
- │ └── invariants.json every normative rule and its enforcement
72
- ├── extensions/pi-revit/
73
- │ ├── index.ts Pi registration, bridge calls, result handling
74
- │ ├── platform-prompt.ts protocols stated once; shared-rule hoisting
75
- │ ├── completion-monitor.ts metadata-driven completion check
76
- │ ├── scope-monitor.ts per-request ledger; objects that predate the request
77
- │ ├── contracts.ts native contracts; contract hash
78
- │ ├── discovery.ts English-vocabulary search over all resources
79
- │ ├── tool-catalog.ts discover/activate tools; limits; fallback route
80
- │ ├── tool-documentation.ts allowlisted manual resolver; contract compatibility
81
- │ ├── instance-router.ts target-session and operation routing
82
- │ ├── tool-schema.ts public bridge input-schema composition
83
- │ └── script-library.ts local reusable scripts
84
- ├── src/Revit/
85
- │ ├── ToolRegistry.cs bridge inventory and metadata/schema projection
86
- │ ├── BridgeServer.cs HTTP contract and dispatch
87
- │ ├── CommandQueue.cs work on Revit's API thread
88
- │ ├── OperationStore.cs operation receipts and deduplicated retry state
89
- │ └── Tools/ implementations; ToolContract, ParameterResolver, ElementTraits,
90
- │ InheritedState, ElementNames, ModelChanges
91
- ├── skills/pi-revit/
92
- │ ├── SKILL.md short task entry; not an encyclopaedia
93
- │ ├── tool-manifest.json documentation index: summaries, groups, guidance
94
- │ ├── contracts.generated.json generated contract snapshot (offline discovery)
95
- │ └── references/ shared rules, workflows, tool-index, tools/<name>.md
96
- ├── workspace/AGENTS.md runtime workspace template; output conventions
97
- ├── scripts/ install/build, generator and validation utilities
98
- └── tests/ behavioral, documentation, discovery and agent-eval checks
99
- ```
100
-
101
- The manifest describes 36 tools today: 30 bridge tools and six Pi utilities. That is
102
- an inventory, not a limit. `package.json` loads `./skills` and the extension entry.
103
-
104
- ## Discovery, activation and reading
105
-
106
- ```mermaid
107
- flowchart TD
108
- R[User request, any language] --> P{Task path}
109
- P -->|Explain or plan| D[Check capability: find_revit_tools, limits, API docs]
110
- P -->|Inspect| I[Select intended session and inspect requested model scope]
111
- P -->|Modify or deliver| M[Establish identity, inspect state, list requirements]
112
- D --> F[Read selected files]
113
- I --> T[Discover capability and activate if needed]
114
- M --> T
115
- T --> L{Dedicated tool covers it?}
116
- L -->|Yes| S[Inspect active schema and read relevant manual]
117
- L -->|No: follow declared alternative| A[search_api_docs, then execute_csharp in scope]
118
- S --> E[Execute within requested scope]
119
- A --> E
120
- E --> V[Verify with declared method, then stop and report]
121
- ```
37
+ | Resource | Purpose |
38
+ | --- | --- |
39
+ | `src/Revit/` | Add-in source, tool implementations, registry, queue and operation store |
40
+ | `extensions/pi-revit/` | Pi tools, discovery, instance routing, result presentation and monitors |
41
+ | `skills/pi-revit/SKILL.md` | Concise task entry and links to relevant operating guidance |
42
+ | `skills/pi-revit/tool-manifest.json` | Tool summaries, groups and guidance index |
43
+ | `skills/pi-revit/contracts.generated.json` | Contract snapshot used for offline documentation discovery |
44
+ | `skills/pi-revit/references/` | Shared rules, recovery, visual verification, workflows and individual tool manuals |
45
+ | `scripts/` | Build, prerequisite checks, deployment, workspace setup, uninstall and diagnostics |
46
+ | `workspace/` | Generic workspace instructions and command templates |
47
+ | `bin/pi-revit.js` | Windows installer entry |
48
+
49
+ The manifest currently describes 30 bridge tools and six Pi utilities. The
50
+ extension can discover additional tools advertised by a selected bridge.
51
+
52
+ ## Instructions, skills and tools
53
+
54
+ Resource scope and resource type are separate. Global or project scope determines
55
+ where Pi discovers a resource. Instructions, skills, tools, templates and packages
56
+ describe what it does. Installing a skill does not mean its complete body is always
57
+ loaded into context.
58
+
59
+ The extension injects a short platform protocol for capability checks, scope,
60
+ completion, evidence, document identity and language. Tool guidelines retain
61
+ tool-specific facts. A skill routes a task to the relevant manuals and workflows;
62
+ reading a manual remains a separate action. Important safeguards are enforced in
63
+ code because an agent may omit a skill or reference.
64
+
65
+ Tool vocabulary is English. The agent translates discovery terms, replies in the
66
+ user's language and reads localized Revit names from actual results. Exact
67
+ BuiltInParameter, BuiltInCategory and GUID identities avoid ambiguous display names.
68
+
69
+ ## Discovery and contract compatibility
122
70
 
123
71
  `find_revit_tools` has two scopes:
124
72
 
125
- - **`available` (default):** six native utilities plus the selected bridge's last
126
- discovered catalogue. If no catalogue is known, it attempts discovery. Query or
127
- exact names activate the returned page by default; plain browsing does not.
128
- Activation is additive and preserves other extensions' active tools.
129
- - **`documentation`:** searches the packaged index and contract snapshot, enriched
130
- with known live descriptors. It makes no bridge request and does not activate tools.
131
- Explicit `activate: true` is rejected. An index entry does not imply executable support.
132
-
133
- Search uses English tool vocabulary. There are no per-language rules: the platform
134
- protocol tells the model to translate a request into English search words, reply in the
135
- user's language, and read localized names from results. Matching normalizes case,
136
- accents, plural and word forms, and ignores numbers, which are arguments. It scores the
137
- name and keywords, the summary, declared limits and input names, and the live
138
- description. All-word matches rank first, followed by strong partial matches. A
139
- tool's declared limits are searchable, so a request just outside a tool finds that tool
140
- together with its alternative. A zero or partial match returns the capability route (API
141
- check, then custom execution) instead of an unexplained absence. Workflows, shared
142
- references and every sibling skill are returned under `guidance`. Search quality is
143
- gated by a corpus with a recall threshold.
144
-
145
- Each result reports source, registration, selected-bridge advertisement, activation,
146
- declared limits, verification method and a local documentation object.
147
- `bridge_catalog_observed_at` dates the discovery snapshot. Neither `active` nor
148
- `registered` is a health check. Use `ping` or instance management for connectivity;
149
- `ping` also reports what is loaded: package, guidance revision, source revision and
150
- per-tool contract agreement.
151
-
152
- The resolver accepts known names from `tool-manifest.json`, constructs a local manual
153
- path, verifies file accessibility and real-path containment, and reports missing
154
- documentation nonfatally. It never trusts a bridge-provided filesystem path.
155
-
156
- Compatibility is exact and per tool. The contract hash covers the input schema,
157
- without descriptions, titles or examples, plus write/effects/document requirement:
158
-
159
- - `contract_match`: the manual was generated from the selected bridge's exact contract.
160
- - `contract_changed`: trust the active schema over the manual.
161
- - `undocumented`: a newer bridge tool with no packaged manual.
162
- - `unknown`: no live contract observed.
163
- - `package_local`: a native utility.
164
-
165
- Rewording guidance never flags a bridge. A changed type, requiredness, enum or effect always does.
166
-
167
- Cross-cutting rules are stated once, in the platform section:
168
-
169
- - capability resolution;
170
- - scope and completion;
171
- - evidence;
172
- - identity;
173
- - language;
174
- - the manual location.
175
-
176
- Bridge guidelines that repeat across tools are hoisted into that section generically,
177
- by normalizing the tool name, so no per-tool copy returns even from older bridges. Per-tool
178
- guidelines keep only tool-specific facts. Under Pi 0.87.0, snippets and guidelines
179
- contribute for active tools. Specialist tools start inactive, and activation exposes
180
- their schemas and guidance on subsequent model requests. No step automatically reads a
181
- manual, and the skill may be skipped. That is why the protocols live in the always-present
182
- section, and why critical enforcement stays in code.
183
-
184
- Every call of a tool that can write or has model effects reports `model_changes`. The bridge
185
- dispatcher records Revit's document-change events for the duration of the call and merges the net
186
- added, modified and deleted objects into the result, with the visibility state of new views. Tools
187
- need no code for it, and custom scripts are covered too. Objects made from an existing one also
188
- report `inherited_state` through the shared `InheritedState` helper, and names and sheet numbers
189
- go through `ElementNames`, which rejects a name already in use with the existing object's ID.
190
- Architecture gates enforce all three for present and future tools.
191
-
192
- The scope monitor reads those reports, never tool names. Per user request it keeps the objects
193
- created in that request. When a call changes a pre-existing object whose name the request
194
- mentions, or a creation hits a name collision, it appends a note that the object predates the
195
- request, and the platform protocol requires asking the user or reporting it. It steers and never
196
- blocks.
197
-
198
- The completion monitor is metadata-driven. When an identical verification call repeats
199
- after further model changes in one request, it appends a completion check, starting from
200
- the third such check. The check asks the agent to verify the explicit requirements,
201
- stop and report, and offer further improvements as suggestions. It steers and never
202
- blocks, so legitimate multi-step work continues. A call's `model_changes`
203
- decide whether it changed the model; declared write/effects are the fallback for older bridges.
204
-
205
- ## Contract ownership and enforcement
206
-
207
- For a bridge tool, the final public input schema is composed in this order:
208
-
209
- 1. Tool class `ParametersSchema` supplies operation inputs.
210
- 2. `ToolRegistry.DescribeParameters` adds document identity and requiredness.
211
- 3. `publicBridgeSchema` adds extension `_operation_id` retry metadata.
212
-
213
- Pi-native tools register their own TypeBox schemas, and their v2 metadata lives in
214
- `contracts.ts`. Code owns every executable contract. `npm run generate:contracts`
215
- snapshots it into `contracts.generated.json`, each manual's Contract block and the
216
- tool index, and the gate fails when any of them is stale. Manuals explain these final
217
- contracts, including action-dependent runtime checks that JSON Schema may not express.
218
- The hand-written manifest holds only summaries, groups and guidance entries.
219
- Current code/registered schemas govern accepted inputs; actual returned outcomes
220
- govern claims about success. Documentation is not an enforcement boundary. Every
221
- normative rule is registered in `docs/invariants.json` with its enforcement: code
222
- with a named test, or, only for agent intent that code cannot observe, advisory with
223
- the agent-eval scenario that measures it. Shared primitives own cross-cutting policy.
224
- `ParameterResolver` never silently chooses among same-named parameters.
225
- `ElementTraits` flags system-owned objects such as titleblock revision schedules.
226
- Architecture gates stop a tool from reintroducing a private variant.
227
- <!-- inv:manual-path-containment -->
228
-
229
- Exact-document guards, supported transaction/preview behavior, original-session
230
- receipt routing and tool-specific limits remain enforced by their existing code.
231
- An explanation does not authorize a write; an audit does not authorize repair;
232
- an edit does not imply file saving. Workflows inherit the user's scope, branch
233
- accordingly, and use recovery/visual checks when relevant. No universal extra
234
- confirmation step is introduced.
235
-
236
- API search reads the selected Revit installation's available XML documentation
237
- and supports enum reflection. It requires the bridge but no open document. It is
238
- not a complete compile check or permission to run arbitrary scripts. General
239
- Revit domain knowledge and current API signatures have different owners; storing
240
- a copied API encyclopaedia in `SKILL.md` would duplicate and age those contracts.
241
-
242
- ## Content ownership and migration
243
-
244
- The former long entry is redistributed as follows:
245
-
246
- | Former material | Maintained home |
73
+ - **`available`** searches Pi utilities and the selected bridge's discovered
74
+ catalogue. Query or exact-name results activate tools by default. Browsing alone
75
+ does not activate them. Activation preserves other extensions' active tools.
76
+ - **`documentation`** searches packaged contracts and manuals, enriched with known
77
+ bridge descriptors. It makes no bridge request and does not activate tools.
78
+ A documentation entry does not establish executable support.
79
+
80
+ Search normalizes case, accents and word forms. It matches names, keywords,
81
+ summaries, limits, inputs and live descriptions. All-word matches rank first;
82
+ strong partial matches follow. A limit can lead to another tool, an API lookup,
83
+ a required user action, or a documented Revit limitation. No matching dedicated
84
+ tool does not by itself mean a task is impossible. Relevant workflows, shared
85
+ guides and sibling skills can also appear as guidance results.
86
+
87
+ Discovery reports registration, selected-bridge advertisement, activation,
88
+ verification and manual location. A discovery timestamp is a snapshot, not a health
89
+ check. `ping` and instance management establish connectivity. `ping` also reports
90
+ the package/guidance revisions and per-tool contract agreement.
91
+
92
+ The manual resolver accepts names from the packaged manifest, verifies local file
93
+ access and real-path containment, and never trusts a bridge-provided filesystem
94
+ path. A missing manual is reported without implying that the tool is unavailable.
95
+
96
+ Contract compatibility is exact and per tool. Its hash covers the input schema,
97
+ write/effects metadata and document requirement, excluding wording, titles and
98
+ examples:
99
+
100
+ | State | Meaning |
247
101
  | --- | --- |
248
- | Task routing and concise essential cautions | `SKILL.md` |
249
- | Instance/document targeting, parameters, units, partial success | `execution-rules.md` and relevant tool manuals |
250
- | Receipts, retries, timeout/bridge/no-document failures | `operation-recovery.md`, `get_revit_operation.md`, `ping.md` |
251
- | Visual evidence and export verification | `visual-verification.md`, capture/export manuals |
252
- | Per-tool inputs, outputs, limits and action differences | Matching tool manual |
253
- | C# globals, transactions, results and reusable scripts | `execute_csharp.md`, `manage_revit_scripts.md`, `search_api_docs.md` |
254
- | Room and audit sequences | Existing workflow references, now with explain/inspect/modify paths |
255
- | Upgrade/deployment notes | README installation/upgrade section and CHANGELOG |
256
- | Model output-folder conventions | `workspace/AGENTS.md` template |
257
-
258
- The workspace template is copied only when absent; setup preserves a user's existing
259
- file. When template guidance changes, describe the manual merge in upgrade notes.
260
- Do not overwrite existing workspace conventions or place contributor rules there.
261
-
262
- For new domain content, pick a useful subject/task boundary, cite the relevant
263
- official Autodesk Help pages and version, and separate concepts from step-by-step
264
- recipes. Give the entry skill a selective description and a short map to its
265
- references. Keep tool inputs in their existing manuals. Validate routing on both
266
- positive examples and nearby requests that should not load the subject skill.
267
-
268
- New tools, changed contracts and documentation checks follow [AGENTS.md](../AGENTS.md).
269
- Guidance revisions are tracked independently from release versions. This structure
270
- is implemented on the branch; comparative agent effectiveness and latency remain
271
- evaluation work described in [evaluation.md](evaluation.md).
102
+ | `contract_match` | Packaged manual matches the observed bridge contract |
103
+ | `contract_changed` | The active schema takes priority over the packaged manual |
104
+ | `undocumented` | The bridge advertises a tool with no packaged manual |
105
+ | `unknown` | No live contract has been observed |
106
+ | `package_local` | A Pi-native utility |
107
+
108
+ Rewording guidance does not change compatibility. Changes to types, requiredness,
109
+ enumerations or effects do.
110
+
111
+ ## Schemas and shared safeguards
112
+
113
+ For bridge tools, public inputs are composed in three stages:
114
+
115
+ 1. The tool class declares operation inputs.
116
+ 2. The registry adds exact document identity and requiredness.
117
+ 3. The Pi extension adds operation-ID retry metadata.
118
+
119
+ Pi-native tools register TypeBox schemas and native contract metadata. Executable
120
+ code owns the contracts; packaged generated snapshots and manual Contract blocks
121
+ reflect them. Manuals also explain runtime conditions that JSON Schema cannot
122
+ fully express. Current schemas govern accepted inputs, and actual returned
123
+ outcomes govern claims of success.
124
+
125
+ Shared helpers resolve parameters, classify special objects, protect names and
126
+ sheet numbers, handle model-edit batches, and summarize inherited state. Parameter
127
+ resolution does not silently choose between same-named parameters. System-owned
128
+ objects, such as titleblock revision schedules, are distinguished from ordinary
129
+ editable elements. Each tool declares the document kinds it supports.
130
+
131
+ Read the intended document's overview and copy its `project.documentId` unchanged
132
+ to operations that require `expected_document_id`. This identifies an open
133
+ document in one bridge session; it is not a path, permanent project ID or
134
+ credential. Reopening the document or restarting the bridge invalidates it.
135
+ Instance selection and operation retries remain bound to their intended session.
136
+
137
+ Model-edit transactions, supported previews and partial/atomic outcomes are
138
+ reported explicitly. A model transaction does not undo earlier UI actions or file
139
+ output. A timeout is not cancellation, a commit is not a save, and unknown receipt
140
+ state is not proof that an edit never ran. See the recovery and execution manuals.
141
+
142
+ `execute_csharp` is an unrestricted CLR escape hatch. Its transaction handling does
143
+ not make arbitrary scripts a security sandbox. Verify unfamiliar API signatures
144
+ with `search_api_docs` and keep execution within the authorized task.
145
+
146
+ ## Change reports and task monitors
147
+
148
+ The dispatcher reports `model_changes` for model-changing calls, including custom
149
+ scripts: added, modified and deleted objects, new-view visibility, and family
150
+ changes where applicable. Modified IDs can include regeneration-related events.
151
+ Objects derived from existing objects also report `inherited_state`, such as
152
+ hidden content, filters, overrides, templates and copied values.
153
+
154
+ The scope monitor tracks objects created in the current request. A change to a
155
+ pre-existing object named in the request, or a name collision, can append a scope
156
+ note. The platform protocol asks the agent to respect scope and disclose relevant
157
+ effects. The monitor steers; it does not block execution.
158
+
159
+ The completion monitor recognizes repeated verification after further changes.
160
+ It asks the agent to compare the result with the explicit requirements, verify,
161
+ then stop and report. Declared effects are a fallback for older bridges that lack
162
+ change reports. Legitimate multi-step tasks can continue.
163
+
164
+ Explanation, inspection and modification remain distinct task paths. A question
165
+ does not authorize editing; an audit does not authorize repairs or exports. Visible
166
+ results require the verification appropriate to the task, rather than a successful
167
+ API return alone.
168
+
169
+ ## Local files and installation
170
+
171
+ Installation builds the bridge against the matching local Revit API assemblies:
172
+ .NET 8 for Revit 2025/2026 and .NET 10 for Revit 2027. Detection supports standard
173
+ Autodesk locations and explicit path overrides. Source is distributed because the
174
+ add-in is built locally. The installed Pi package and deployed add-in should use
175
+ matching versions.
176
+
177
+ Workspace setup creates a generic `Documents\pi-revit` folder by default and
178
+ preserves an existing workspace `AGENTS.md`. Updated output/safety conventions can
179
+ be merged from the packaged template when upgrading.
180
+
181
+ Default exports are sorted automatically under the exported document's
182
+ identity-derived `Models/<title>--<hash>/exports` directory. Model markers can
183
+ contain original paths or cloud identities. Captures, large result files,
184
+ reusable script definitions and run history also belong to the local user.
185
+ Keep these files outside source control; sanitizing a filename does not sanitize
186
+ the model information in its contents.
187
+
188
+ For operational details, start with [the skill](../skills/pi-revit/SKILL.md),
189
+ [execution rules](../skills/pi-revit/references/execution-rules.md),
190
+ [operation recovery](../skills/pi-revit/references/operation-recovery.md), and
191
+ [visual verification](../skills/pi-revit/references/visual-verification.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-revit",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "Native Pi connector for Autodesk Revit. Run npx.cmd -y pi-revit for the full Windows install.",
5
5
  "author": "Ahmad Altahlawi",
6
6
  "license": "MIT",
@@ -26,24 +26,28 @@
26
26
  "scripts": {
27
27
  "deploy": "powershell -ExecutionPolicy Bypass -File scripts/deploy.ps1",
28
28
  "setup": "powershell -ExecutionPolicy Bypass -File scripts/setup-workspace.ps1",
29
- "uninstall:revit": "powershell -ExecutionPolicy Bypass -File scripts/uninstall.ps1",
30
- "test:search": "dotnet run --project tests/search-engine",
31
- "test:extension": "node scripts/test-extension.mjs",
32
- "test:docs": "node scripts/check-tool-documentation.mjs",
33
- "test:installer": "node --test tests/installer/*.test.cjs",
34
- "test:sdk": "powershell -NoProfile -ExecutionPolicy Bypass -File tests/installer/sdk.test.ps1",
35
- "generate:contracts": "node scripts/generate-contracts.mjs",
36
- "test:corpus": "node tests/discovery/run-corpus.mjs"
29
+ "uninstall:revit": "powershell -ExecutionPolicy Bypass -File scripts/uninstall.ps1"
37
30
  },
38
31
  "files": [
39
- "bin/",
40
- "extensions/",
41
- "skills/",
42
- "scripts/",
43
- "src/",
44
- "workspace/",
45
- "docs/",
46
- "AGENTS.md",
32
+ "bin/pi-revit.js",
33
+ "extensions/pi-revit/*.ts",
34
+ "skills/pi-revit/SKILL.md",
35
+ "skills/pi-revit/tool-manifest.json",
36
+ "skills/pi-revit/contracts.generated.json",
37
+ "skills/pi-revit/references/**/*.md",
38
+ "scripts/build.ps1",
39
+ "scripts/check-sdk.ps1",
40
+ "scripts/deploy.ps1",
41
+ "scripts/setup-workspace.ps1",
42
+ "scripts/uninstall.ps1",
43
+ "scripts/revit.ps1",
44
+ "src/Revit/*.cs",
45
+ "src/Revit/Tools/*.cs",
46
+ "src/Revit/RevitBridge.csproj",
47
+ "src/Revit/RevitBridge.addin",
48
+ "workspace/AGENTS.md",
49
+ "workspace/*.cmd",
50
+ "docs/architecture.md",
47
51
  "README.md",
48
52
  "CHANGELOG.md"
49
53
  ],