@reunionstudio/airlock-mcp 0.1.5 → 0.1.6
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/.agents/skills/airlock-mcp/SKILL.md +11 -0
- package/README.md +12 -0
- package/docs/install-surface.md +8 -0
- package/docs/workflows.md +11 -0
- package/package.json +1 -1
- package/setup.py +1 -1
- package/src/airlock_mcp/__init__.py +1 -1
- package/src/airlock_mcp/app_context.py +14 -0
- package/src/airlock_mcp/bootstrap.py +9 -0
- package/src/mcp.mjs +1 -1
- package/src/text.mjs +9 -0
|
@@ -246,6 +246,17 @@ For read-only planning and audit, use `observe.reference_context`,
|
|
|
246
246
|
`observe.explain_access(action => 'get_reference_record', object_key => ...)`
|
|
247
247
|
without querying raw reference rows.
|
|
248
248
|
|
|
249
|
+
Attachments remain governed evidence. Agents should discover and manage them
|
|
250
|
+
through installed Airlock procedures, not by reading Airlock-owned stages or
|
|
251
|
+
generated storage directly. The Streamlit Native App can preview images and
|
|
252
|
+
text inline and can render bounded page-at-a-time PDF previews for files up to
|
|
253
|
+
100 MB and 2,000 pages. PDFs larger than 12 MB require an explicit open action;
|
|
254
|
+
the selected page and next two pages warm a private session cache. Full-file
|
|
255
|
+
download remains a short-lived Snowflake link when available. Successful PDF
|
|
256
|
+
page previews emit metadata-only `ATTACHMENT_PREVIEW` activity, never document
|
|
257
|
+
content or stage URLs. This UI preview capability does not grant MCP clients
|
|
258
|
+
direct attachment bytes.
|
|
259
|
+
|
|
249
260
|
Help the app follow the loop:
|
|
250
261
|
|
|
251
262
|
- Observe/read: fetch existing governed data through approved Airlock or
|
package/README.md
CHANGED
|
@@ -240,6 +240,18 @@ inspect `observe.usage_limits`, `observe.usage_limit`, and
|
|
|
240
240
|
`observe.explain_access(action => 'get_reference_record', object_key => ...)`
|
|
241
241
|
without reading raw reference rows.
|
|
242
242
|
|
|
243
|
+
Airlock's Streamlit Native App can inspect governed attachment evidence without
|
|
244
|
+
moving it into a separate document service. Images and text preview inline.
|
|
245
|
+
PDFs up to 100 MB and 2,000 pages render one selected page at a time; the
|
|
246
|
+
selected page and next two pages are loaded as one bounded window so ordinary
|
|
247
|
+
forward navigation can use the session cache. PDFs larger than 12 MB require an
|
|
248
|
+
explicit open action. Rendering is bounded by time, dimensions, concurrency,
|
|
249
|
+
output size, session storage, and expiry, while full-file access remains a
|
|
250
|
+
short-lived Snowflake download when available. Successful PDF page previews
|
|
251
|
+
emit metadata-only `ATTACHMENT_PREVIEW` activity. This human-facing capability
|
|
252
|
+
does not permit an MCP agent to bypass attachment procedures or read underlying
|
|
253
|
+
stage objects directly.
|
|
254
|
+
|
|
243
255
|
For governed Markdown knowledge, use the `okf-knowledge-bundle` pattern. It
|
|
244
256
|
sets `core_config.payload_adapter` to `okf_knowledge_bundle` so installed
|
|
245
257
|
Airlock can load locally validated bundles through
|
package/docs/install-surface.md
CHANGED
|
@@ -38,6 +38,14 @@ known lookup value and purpose, with `observe.reference_context`,
|
|
|
38
38
|
`observe.explain_access(action => 'get_reference_record', object_key => ...)`
|
|
39
39
|
for planning and audit.
|
|
40
40
|
|
|
41
|
+
The installed Streamlit Native App also provides governed attachment
|
|
42
|
+
inspection: inline image/text previews and bounded, page-at-a-time PDF preview
|
|
43
|
+
for documents up to 100 MB and 2,000 pages. The selected PDF page warms the next
|
|
44
|
+
two pages in the session cache; large PDFs require explicit open, and full-file
|
|
45
|
+
access uses Snowflake download links when available. Successful PDF page
|
|
46
|
+
previews emit metadata-only `ATTACHMENT_PREVIEW` activity. This UI capability
|
|
47
|
+
does not grant MCP clients direct stage access.
|
|
48
|
+
|
|
41
49
|
The connector package and MCP server live in `reunionstudio/airlock-mcp`.
|
|
42
50
|
This workbench provides the spec-building implementation inside that one
|
|
43
51
|
installed Airlock MCP experience.
|
package/docs/workflows.md
CHANGED
|
@@ -187,6 +187,17 @@ budgeting. Use `observe.reference_context`, `observe.usage_limits`,
|
|
|
187
187
|
`observe.explain_access(action => 'get_reference_record', object_key => ...)`
|
|
188
188
|
for planning and audit without reading raw reference rows.
|
|
189
189
|
|
|
190
|
+
## Governed Attachment Preview
|
|
191
|
+
|
|
192
|
+
Attachments remain governed evidence. Agents should discover and manage them
|
|
193
|
+
through installed Airlock procedures rather than reading Airlock-owned stages.
|
|
194
|
+
In the Streamlit Native App, images and text can preview inline, and PDFs up to
|
|
195
|
+
100 MB and 2,000 pages can render one selected page at a time. Airlock renders a
|
|
196
|
+
bounded three-page window so the next two pages are normally session-cache
|
|
197
|
+
hits; PDFs larger than 12 MB require an explicit open action. Full-file download
|
|
198
|
+
remains available through a short-lived Snowflake link when the runtime can
|
|
199
|
+
create one. Preview activity emits metadata-only `ATTACHMENT_PREVIEW` events.
|
|
200
|
+
|
|
190
201
|
The app should follow the loop:
|
|
191
202
|
|
|
192
203
|
1. Observe/read governed records through approved Airlock or Snowflake surfaces.
|
package/package.json
CHANGED
package/setup.py
CHANGED
|
@@ -54,6 +54,14 @@ purpose, and role lens. Use `observe.reference_context`,
|
|
|
54
54
|
`observe.explain_access(action => 'get_reference_record', object_key => ...)`
|
|
55
55
|
for planning and audit without reading raw reference rows.
|
|
56
56
|
|
|
57
|
+
Attachments remain governed evidence. Agents should discover and manage them
|
|
58
|
+
through installed Airlock procedures, not by reading Airlock-owned stages.
|
|
59
|
+
The Streamlit Native App can preview images and text inline and can render
|
|
60
|
+
bounded page-at-a-time PDF previews for files up to 100 MB and 2,000 pages.
|
|
61
|
+
PDFs larger than 12 MB require explicit open; successful page previews emit
|
|
62
|
+
metadata-only `ATTACHMENT_PREVIEW` activity and do not grant MCP clients direct
|
|
63
|
+
attachment bytes.
|
|
64
|
+
|
|
57
65
|
Do not store credentials here. Do not write directly to Airlock-owned tables,
|
|
58
66
|
stages, generated views, or generated tables. Use approved Airlock/Snowflake
|
|
59
67
|
access paths and submit governed decisions or actions through spec contracts.
|
|
@@ -102,6 +110,11 @@ known lookup value and purpose, and use `observe.reference_context`,
|
|
|
102
110
|
`observe.usage_limits`, `observe.usage_limit`, and
|
|
103
111
|
`observe.explain_access(action => 'get_reference_record', object_key => ...)`
|
|
104
112
|
for planning and audit.
|
|
113
|
+
|
|
114
|
+
For attachments, use installed Airlock procedures and governed UI surfaces.
|
|
115
|
+
The Streamlit Native App can preview images/text and bounded PDF pages, but
|
|
116
|
+
`ATTACHMENT_PREVIEW` activity is metadata-only and MCP clients must not read
|
|
117
|
+
Airlock-owned stages directly.
|
|
105
118
|
"""
|
|
106
119
|
|
|
107
120
|
|
|
@@ -162,6 +175,7 @@ def _manifest(mode: str, entries: list[dict[str, Any]]) -> dict[str, Any]:
|
|
|
162
175
|
"agent": "governed agent work in the actor scope",
|
|
163
176
|
"admin": "administrative mutation and operational changes",
|
|
164
177
|
"restricted_reference": "one-record reference lookup through agent.get_reference_record; do not enumerate protected reference paths",
|
|
178
|
+
"attachment_preview": "governed Streamlit preview emits metadata-only ATTACHMENT_PREVIEW; MCP clients do not get direct stage access",
|
|
165
179
|
},
|
|
166
180
|
"specs": entries,
|
|
167
181
|
"tracks": {
|
|
@@ -139,6 +139,15 @@ value, purpose, and role lens. Use `observe.usage_limits`,
|
|
|
139
139
|
`observe.explain_access(action => 'get_reference_record', object_key => ...)`
|
|
140
140
|
for planning and audit without reading raw reference rows.
|
|
141
141
|
|
|
142
|
+
Attachments remain governed evidence. Agents should discover and manage them
|
|
143
|
+
through installed Airlock procedures, not by reading Airlock-owned stages
|
|
144
|
+
directly. The Streamlit Native App can preview images and text inline and can
|
|
145
|
+
render bounded page-at-a-time PDF previews for files up to 100 MB and 2,000
|
|
146
|
+
pages. PDFs larger than 12 MB require an explicit open action; the selected
|
|
147
|
+
page and next two pages warm a private session cache. Successful PDF page
|
|
148
|
+
previews emit metadata-only `ATTACHMENT_PREVIEW` activity and do not grant MCP
|
|
149
|
+
clients direct attachment bytes.
|
|
150
|
+
|
|
142
151
|
The app may orient the user with summaries, comparisons, rankings, exception
|
|
143
152
|
queues, proposals, or dashboards. It should submit governed choices back
|
|
144
153
|
through an Airlock spec contract. Do not write directly to Airlock-owned tables,
|
package/src/mcp.mjs
CHANGED
|
@@ -44,7 +44,7 @@ export function handleMcpRequest(message) {
|
|
|
44
44
|
},
|
|
45
45
|
serverInfo: {
|
|
46
46
|
name: "airlock",
|
|
47
|
-
version: "0.1.
|
|
47
|
+
version: "0.1.6",
|
|
48
48
|
},
|
|
49
49
|
instructions:
|
|
50
50
|
"Airlock MCP helps agents improve processes with Airlock specs and build apps or workflows that use existing specs. Use airlock_start for orientation or the airlock_* tools to bootstrap, draft, check, summarize, export, and render specs.",
|
package/src/text.mjs
CHANGED
|
@@ -79,6 +79,12 @@ role lens. It returns at most one record, applies reference row filters, checks
|
|
|
79
79
|
\`observe.reference_context\`, \`observe.usage_limits\`, \`observe.usage_limit\`,
|
|
80
80
|
and \`observe.explain_access(action => 'get_reference_record', object_key => ...)\`
|
|
81
81
|
for read-only planning and audit.
|
|
82
|
+
Attachments remain governed evidence. Agents should discover and manage them
|
|
83
|
+
through installed Airlock procedures, not by reading Airlock-owned stages.
|
|
84
|
+
The Streamlit Native App can preview images/text and bounded page-at-a-time
|
|
85
|
+
PDFs up to 100 MB and 2,000 pages; PDFs larger than 12 MB require explicit
|
|
86
|
+
open. Successful page previews emit metadata-only \`ATTACHMENT_PREVIEW\`
|
|
87
|
+
activity and do not grant MCP clients direct attachment bytes.
|
|
82
88
|
|
|
83
89
|
Do not use retired admin read wrappers such as
|
|
84
90
|
\`admin.list_specs\`, \`admin.describe_role\`, or \`admin.list_events\`; use
|
|
@@ -204,6 +210,9 @@ read wrappers such as \`admin.list_specs\`, \`admin.describe_role\`, or
|
|
|
204
210
|
\`reference_config.restricted_reference\`, do not enumerate the protected
|
|
205
211
|
reference; use \`agent.get_reference_record\` for a known lookup value and
|
|
206
212
|
\`observe.usage_limits\` / \`observe.usage_limit\` for budget visibility. It can
|
|
213
|
+
also explain governed attachment preview: Streamlit can preview images/text and
|
|
214
|
+
bounded PDF pages, while \`ATTACHMENT_PREVIEW\` remains metadata-only and agents
|
|
215
|
+
must use Airlock procedures instead of direct stage reads. Airlock MCP can
|
|
207
216
|
seed an app repo with \`airlock/specs.manifest.json\`, spec snapshots, sample
|
|
208
217
|
records, and generated helper folders. The app should submit decisions,
|
|
209
218
|
approvals, actions, comments, or follow-ups through Airlock spec contracts, not
|