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.
- package/CHANGELOG.md +483 -465
- package/README.md +802 -768
- package/docs/architecture.md +180 -260
- package/package.json +21 -17
- package/AGENTS.md +0 -167
- package/docs/evaluation.md +0 -434
- package/docs/invariants.json +0 -147
- package/scripts/benchmark-search-docs.py +0 -322
- package/scripts/check-tool-documentation.mjs +0 -287
- package/scripts/generate-contracts.mjs +0 -80
- package/scripts/lib/platform.mjs +0 -226
- package/scripts/test-extension.mjs +0 -15
package/docs/architecture.md
CHANGED
|
@@ -1,271 +1,191 @@
|
|
|
1
|
-
# PI-Revit
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
user
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
check
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
|
249
|
-
|
|
|
250
|
-
|
|
|
251
|
-
|
|
|
252
|
-
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
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.
|
|
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
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
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
|
],
|