slidemind 0.3.19 → 0.4.0
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/AGENTS.md +591 -15
- package/README.md +202 -7
- package/bin/slidemind.mjs +50 -2
- package/package.json +2 -2
- package/skills/create-slides/SKILL.md +484 -886
- package/skills/search/SKILL.md +46 -23
- package/src/bridge/build-and-push.mjs +548 -73
- package/src/bridge/bundle.mjs +100 -31
- package/src/bridge/capture.mjs +14 -17
- package/src/bridge/client/brands.mjs +157 -18
- package/src/bridge/client/engine-routing.mjs +48 -13
- package/src/bridge/client/engine-search.mjs +24 -1
- package/src/bridge/client/engine-slides.mjs +1 -1
- package/src/bridge/client/render.mjs +27 -1
- package/src/bridge/client/transport.mjs +499 -23
- package/src/bridge/client.mjs +10 -0
- package/src/bridge/config.mjs +67 -6
- package/src/bridge/engine-download.mjs +0 -10
- package/src/bridge/graph-auth.mjs +55 -3
- package/src/bridge/image-intent-envelope.mjs +239 -0
- package/src/bridge/package-preview.mjs +67 -0
- package/src/bridge/sharepoint.mjs +914 -0
- package/src/builders/asset-fetch.mjs +203 -0
- package/src/builders/block-dividers.mjs +83 -0
- package/src/builders/build.mjs +171 -87
- package/src/builders/card-height.mjs +294 -0
- package/src/builders/chart-hole.mjs +183 -0
- package/src/builders/chart-jsx.mjs +410 -0
- package/src/builders/chart-labels.mjs +326 -0
- package/src/builders/concept-geometry.mjs +370 -0
- package/src/builders/concept-intent.mjs +200 -0
- package/src/builders/concept-layout.mjs +79 -0
- package/src/builders/concept-lines.mjs +509 -0
- package/src/builders/concept-lists.mjs +270 -0
- package/src/builders/concept-marks.mjs +84 -0
- package/src/builders/concept-relationships.mjs +12 -0
- package/src/builders/concept-spec.mjs +645 -0
- package/src/builders/concept-text.mjs +140 -0
- package/src/builders/concept-waves.mjs +57 -0
- package/src/builders/copy-fit.mjs +139 -0
- package/src/builders/design-tokens.mjs +347 -0
- package/src/builders/draft-check.mjs +552 -340
- package/src/builders/draft-lines.mjs +369 -0
- package/src/builders/edit-route.mjs +29 -0
- package/src/builders/figure-sketch.mjs +375 -0
- package/src/builders/fold-sets.mjs +639 -0
- package/src/builders/gate-server.mjs +9 -4
- package/src/builders/gate-session.js +273 -12
- package/src/builders/gate-shell.js +1494 -0
- package/src/builders/image-intent-check.mjs +308 -0
- package/src/builders/image-use-reconcile.mjs +107 -0
- package/src/builders/kit-helpers.mjs +121 -0
- package/src/builders/layout-names.mjs +32 -0
- package/src/builders/legacy-reference-uses.mjs +179 -0
- package/src/builders/line-fit.mjs +224 -0
- package/src/builders/line-native.mjs +895 -0
- package/src/builders/line-relations.mjs +230 -0
- package/src/builders/lint-fix.mjs +117 -9
- package/src/builders/lint.mjs +25 -20
- package/src/builders/list-jsx.mjs +88 -0
- package/src/builders/placement.mjs +133 -0
- package/src/builders/plan-checks.mjs +135 -0
- package/src/builders/plan-comments.mjs +19 -0
- package/src/builders/plan-handlers.mjs +95 -0
- package/src/builders/plan-markdown-edit.mjs +3 -3
- package/src/builders/plan-overlay.js +1530 -1608
- package/src/builders/plan.mjs +689 -186
- package/src/builders/preset-definitions.json +1 -0
- package/src/builders/preset-eval.mjs +244 -0
- package/src/builders/preview.html +51 -120
- package/src/builders/red-thread-backbone.mjs +135 -36
- package/src/builders/repair.mjs +205 -0
- package/src/builders/repeat-groups.mjs +540 -0
- package/src/builders/resolve-skill.mjs +5 -4
- package/src/builders/review-overlay.js +296 -293
- package/src/builders/review.mjs +305 -84
- package/src/builders/rule-shift.mjs +96 -0
- package/src/builders/seat.mjs +354 -0
- package/src/builders/settle-driver.mjs +236 -0
- package/src/builders/settle.mjs +1448 -0
- package/src/builders/slide-prep.mjs +67 -0
- package/src/builders/spec-assets.mjs +236 -0
- package/src/builders/spec-match.mjs +56 -0
- package/src/builders/stack.mjs +413 -0
- package/src/builders/storyboard-markdown.mjs +70 -27
- package/src/builders/storyboard-schema.mjs +54 -114
- package/src/builders/text-blocks.mjs +212 -0
- package/src/builders/text-card-fit.mjs +552 -0
- package/src/builders/text-stack.mjs +276 -0
- package/src/builders/transcribe.mjs +1069 -0
- package/src/cli/assets.mjs +164 -0
- package/src/cli/common.mjs +173 -12
- package/src/cli/concept-spec-support.mjs +76 -0
- package/src/cli/concepts.mjs +1002 -103
- package/src/cli/deck.mjs +401 -65
- package/src/cli/diagnose.mjs +4 -2
- package/src/cli/engine-helpers.mjs +17 -10
- package/src/cli/engine-results.mjs +76 -3
- package/src/cli/help.mjs +232 -28
- package/src/cli/install.mjs +9 -0
- package/src/cli/maintenance.mjs +104 -0
- package/src/cli/read.mjs +2 -1
- package/src/cli/ready.mjs +6 -3
- package/src/cli/record.mjs +522 -0
- package/src/cli/remote.mjs +818 -0
- package/src/cli/revision.mjs +686 -0
- package/src/cli/search.mjs +30 -11
- package/src/cli/session.mjs +56 -13
- package/src/cli/setup.mjs +46 -2
- package/src/cli/status.mjs +142 -33
- package/src/cli/tasks.mjs +246 -0
- package/src/cli/transcribe.mjs +854 -0
- package/src/cli/workspace-ui.mjs +260 -0
- package/src/cli/workspace.mjs +212 -34
- package/src/install-channel.mjs +64 -7
- package/src/lib/adopt.mjs +346 -25
- package/src/lib/concept-spec-binding.mjs +96 -0
- package/src/lib/conversions.mjs +70 -6
- package/src/lib/convert-folded.mjs +107 -0
- package/src/lib/deck-paths.mjs +418 -0
- package/src/lib/durable-ids.mjs +47 -0
- package/src/lib/edit-operations.mjs +316 -0
- package/src/lib/edit-state.mjs +1244 -0
- package/src/lib/edit-transitions.mjs +120 -0
- package/src/lib/extensions.mjs +501 -0
- package/src/lib/image-assets.mjs +465 -0
- package/src/lib/image-derivatives.mjs +234 -0
- package/src/lib/image-intent-fingerprint.mjs +70 -0
- package/src/lib/image-intent-tags.mjs +176 -0
- package/src/lib/image-intent.mjs +802 -0
- package/src/lib/image-use-overrides.mjs +279 -0
- package/src/lib/inline-components.mjs +613 -0
- package/src/lib/lint-converted.mjs +68 -4
- package/src/lib/merge-json.mjs +163 -0
- package/src/lib/overwrite-guard.mjs +3 -3
- package/src/lib/presentation-context.mjs +531 -0
- package/src/lib/preservation-tags.mjs +157 -0
- package/src/lib/preservation-verdict.mjs +1342 -0
- package/src/lib/publish.mjs +1557 -0
- package/src/lib/rebase.mjs +945 -0
- package/src/lib/reconcile-ack.mjs +4 -6
- package/src/lib/reconcile.mjs +62 -24
- package/src/lib/record-client.mjs +175 -0
- package/src/lib/record-state.mjs +151 -0
- package/src/lib/remote.mjs +661 -0
- package/src/lib/revision.mjs +1210 -0
- package/src/lib/slide-guids.mjs +4 -6
- package/src/lib/slide-preservation.mjs +423 -0
- package/src/lib/slide-selection.mjs +9 -0
- package/src/lib/workspace-transaction.mjs +117 -0
- package/src/pptx/content-digest.mjs +334 -0
- package/src/pptx/deck-assemble.mjs +1278 -0
- package/src/pptx/fill/engine.mjs +2 -3
- package/src/pptx/fill/freeform.mjs +6 -3
- package/src/pptx/ooxml.mjs +20 -0
- package/src/pptx/package-evidence.mjs +383 -0
- package/src/pptx/tags.mjs +163 -11
- package/src/update-check.mjs +22 -4
- package/src/workspace/adapters.mjs +222 -0
- package/src/workspace/auth.mjs +256 -0
- package/src/workspace/autostart.mjs +204 -0
- package/src/workspace/daemon.mjs +360 -0
- package/src/workspace/discovery.mjs +180 -0
- package/src/workspace/edit.mjs +167 -0
- package/src/workspace/events.mjs +52 -0
- package/src/workspace/gate-client.mjs +290 -0
- package/src/workspace/handback.mjs +73 -0
- package/src/workspace/lifecycle.mjs +635 -0
- package/src/workspace/operations.mjs +200 -0
- package/src/workspace/pick-folder.mjs +152 -0
- package/src/workspace/registry.mjs +359 -0
- package/src/workspace/remote-links.mjs +397 -0
- package/src/workspace/remote-status.mjs +359 -0
- package/src/workspace/routes.mjs +1331 -0
- package/src/workspace/server.mjs +159 -0
- package/src/workspace/sync.mjs +1119 -0
- package/src/workspace/task-actions.mjs +215 -0
- package/src/workspace/tasks.mjs +507 -0
- package/src/workspace/ui/app.js +1886 -0
- package/src/workspace/ui/index.html +141 -0
- package/src/workspace/ui/plan-bridge.js +120 -0
- package/src/workspace/ui/sharepoint.svg +59 -0
- package/src/workspace/ui/styles.css +423 -0
- package/src/builders/visual-families.mjs +0 -46
package/skills/search/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slidemind-search
|
|
3
|
-
description: Discover, search, and reuse content from the active corporate design's engines — image/icon engines and slide libraries —
|
|
3
|
+
description: Discover, search, and reuse content from the active corporate design's engines — image/icon engines and slide libraries — or from a local PowerPoint file on disk. Finds existing slides and brand imagery — from the engines or from a local .pptx — then reuses them either by inserting them live into an open PowerPoint or by folding them into a deck as native one-slide .pptx files that survive re-render. Use whenever the user asks to find or reuse an existing slide ("is there a slide on X in our library", "find the Q3 results slide", "drop in / reuse our pricing slide"), to reuse a slide from another presentation or deck on disk, to ask what's in a local .pptx file, to search the brand's icon/image engines, or to ask what slide or image libraries exist. Skip when the user wants to author NEW slide content from scratch — that is slidemind-create-slides — or to merely open, present, or rename a deck.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# slidemind-search
|
|
@@ -41,8 +41,7 @@ identity):
|
|
|
41
41
|
itself, because the claim carrying the deployment's address is minted in the add-in. Ask the user
|
|
42
42
|
to open PowerPoint → slidemind → **Settings → General → Connect CLI**, press the **link button**,
|
|
43
43
|
and copy the command shown (**CLI already installed?** gives the short `slidemind setup …` form).
|
|
44
|
-
Have them paste it to you and run it **verbatim**.
|
|
45
|
-
environments.
|
|
44
|
+
Have them paste it to you and run it **verbatim**.
|
|
46
45
|
|
|
47
46
|
This is the same connection as `slidemind-create-slides`, whose **Connecting the CLI** section
|
|
48
47
|
carries the full step-by-step. If it was approved there, it is already available here.
|
|
@@ -108,18 +107,20 @@ Follow `workflow/search.md` for the discipline; this is the CLI shape of its loo
|
|
|
108
107
|
(`--type scope` — `scope:all`, and `scope:sharepoint` once a site is connected), which search the
|
|
109
108
|
corpus unfiltered. Filter with `--subtype <image|slide|template|content>` (e.g. `slidemind ls
|
|
110
109
|
engines --type search --subtype slide`). The catalog is **per-user, not per-presentation** —
|
|
111
|
-
there is no presId to scope
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
through to a scope. An empty list **under a `--type`/`--subtype` filter** says so explicitly — it
|
|
110
|
+
there is no presId to scope. (`--to` is accepted but never needed here.) Pick an **id** from
|
|
111
|
+
the list — do not invent one. **An empty or thin engine list is not "nothing to search"** (see
|
|
112
|
+
`workflow/search.md`): fall through to a scope. An empty list **under a `--type`/`--subtype` filter** says so explicitly — it
|
|
115
113
|
reports how many engines and scopes exist unfiltered — so the next move there is to drop the
|
|
116
114
|
filter, not to jump to a scope. A row marked *nothing indexed yet* / *indexing* exists but will
|
|
117
115
|
return nothing right now; pick another target.
|
|
118
|
-
2. **Choose the target + intent.** Slide engines (`subtype slide`) and scopes
|
|
119
|
-
**content** (the slide's text is the signal — title, body, tables, notes)
|
|
120
|
-
slide image is the signal). Image/icon engines (`subtype image`) are
|
|
121
|
-
|
|
122
|
-
|
|
116
|
+
2. **Choose the target + intent.** Slide engines (`subtype slide`), content collections and scopes
|
|
117
|
+
support two intents: **content** (the slide's text is the signal — title, body, tables, notes)
|
|
118
|
+
and **visual** (the slide image is the signal). Image/icon engines (`subtype image`) are
|
|
119
|
+
**visual-only**, and so are **template collections** (`subtype template`): their text is
|
|
120
|
+
placeholder, so query the structure the content needs ("loop diagram with 5 steps",
|
|
121
|
+
"three-column comparison"), never the topic. Match the intent to the ask: "a slide that says X" /
|
|
122
|
+
"covers topic Y" → `--intent content`; "a slide that looks like X" / brand imagery →
|
|
123
|
+
`--intent visual`. `--intent auto` lets the engine decide.
|
|
123
124
|
3. **Search — no window to choose.** `slidemind search "<query>" --engine <id> --intent
|
|
124
125
|
<auto|content|visual> [--top N]` (leave `--to` off). A **scope** target additionally needs
|
|
125
126
|
`--result-type slide|image` (it has no subtype of its own; the CLI defaults it to `slide`). Omit
|
|
@@ -133,8 +134,6 @@ Follow `workflow/search.md` for the discipline; this is the CLI shape of its loo
|
|
|
133
134
|
older relayed path, where the id is bound to that window — thread that `presId` in as `--to
|
|
134
135
|
<presId>`. **Copy the next-step commands the search prints** rather than composing them from
|
|
135
136
|
memory.
|
|
136
|
-
- Connected to **several environments**? Pass `--deck <deck>` so the search routes by that deck's
|
|
137
|
-
bound design instead of asking you to choose an environment.
|
|
138
137
|
- **On `0 result(s)`, read the diagnostic the CLI prints and act on it** — it lists the causes
|
|
139
138
|
that look identical from here (nothing connected, still indexing, the engine's folder filter
|
|
140
139
|
excludes the content) and the next moves. Reuse from a scope works exactly like reuse from an
|
|
@@ -151,6 +150,11 @@ Follow `workflow/search.md` for the discipline; this is the CLI shape of its loo
|
|
|
151
150
|
saved file, and re-search once if it was wrong — two failed downloads for the same need means
|
|
152
151
|
mark it unresolved and move on. Pick by **selection number(s)**, and **cite the sources** (see
|
|
153
152
|
the rule below) whenever you report results back.
|
|
153
|
+
**Slides the user picks; imagery you pick.** Before you reuse slide or template results, show
|
|
154
|
+
the user the candidates — the contact sheet path, or the numbered titles with score and source —
|
|
155
|
+
and ask which to reuse through your harness's question tool; reuse exactly their picks. When none
|
|
156
|
+
fit, search again with a different query or engine and ask again. An image or icon result you
|
|
157
|
+
pick yourself.
|
|
154
158
|
5. **Read the source deck when the story matters.** A found slide came out of a real presentation,
|
|
155
159
|
and often the answer the user needs is in the *rest* of it — how the slide was framed, what came
|
|
156
160
|
before and after, whether that deck already covers more of the ask. `slidemind read-source
|
|
@@ -172,7 +176,13 @@ Follow `workflow/search.md` for the discipline; this is the CLI shape of its loo
|
|
|
172
176
|
## Reuse targets — insert live, or fold into a deck
|
|
173
177
|
|
|
174
178
|
A found slide can be reused two ways. Both extract the picked result(s) as native PowerPoint slides
|
|
175
|
-
— **reuse is JSX-free; reused slides
|
|
179
|
+
— **reuse is JSX-free; reused slides land as native `.pptx` and stay native until the user asks to change one** (`workflow/search.md`).
|
|
180
|
+
Then convert that one slide in place — `slidemind adopt decks/<slug>/.slidemind/slides/<NN-reused-…>.pptx --in-place` — and
|
|
181
|
+
edit its jsx like any deck slide (create-slides → editing). **A picked template is a starting
|
|
182
|
+
layout, not the answer:** when the user asked for slides about something ("build two slides on X
|
|
183
|
+
from our templates"), that request is the ask to change them — adopt each picked template in place
|
|
184
|
+
and fill it with the content the slide must carry; never stop at placeholder text. Plain reuse (the
|
|
185
|
+
user wants the existing slide itself) stays native.
|
|
176
186
|
|
|
177
187
|
- **Insert LIVE into an open PowerPoint** — `slidemind insert-slide --search <searchId> --pick
|
|
178
188
|
<n[,n,…]> --to <presId> [--at <N>]`. **This is the one host-required step:** the picked slides
|
|
@@ -185,7 +195,7 @@ A found slide can be reused two ways. Both extract the picked result(s) as nativ
|
|
|
185
195
|
- **Fold into a DECK on disk** — `slidemind add-slide --search <searchId> --pick <n[,n,…]> --deck
|
|
186
196
|
<deck> [--at <N>]` (add `--to <searchWindow>` only on the relayed path, where the extraction must
|
|
187
197
|
run on the window that holds the `searchId`). Each picked result is written as a native one-slide
|
|
188
|
-
file into `decks/<slug
|
|
198
|
+
file into `decks/<slug>/.slidemind/slides/NN-reused-*.pptx`, in play order; no live window is changed, and
|
|
189
199
|
nothing needs one. `--json` returns `{ searchId, deck, slides[] }`. Use this when the reused slide
|
|
190
200
|
should become **part of a deck the user keeps and re-renders** — and prefer it when PowerPoint
|
|
191
201
|
isn't open: fold now, `slidemind push <deck>` later.
|
|
@@ -201,7 +211,7 @@ deck), skip discovery entirely — no host, no window, no engine:
|
|
|
201
211
|
<n[,n,…]> --deck <deck> [--at <N>]`. `--from` is the local-file alternative to `--search` (they
|
|
202
212
|
are **mutually exclusive**), and it needs no `--to` — there is no window in the loop.
|
|
203
213
|
|
|
204
|
-
This writes the **same** `decks/<slug
|
|
214
|
+
This writes the **same** `decks/<slug>/.slidemind/slides/NN-reused-*.pptx` as the engine path, so the durable
|
|
205
215
|
rule below applies unchanged (deck source-of-truth, spliced by play-order filename, survives every
|
|
206
216
|
re-render). To deliver a local slide **live** into an open window there is no `insert-slide --from`:
|
|
207
217
|
fold it into a deck as above, then `slidemind push <deck>`.
|
|
@@ -227,6 +237,19 @@ download-result` — it writes the asset into the deck's `assets/`. That mechani
|
|
|
227
237
|
icon-recolor descriptor and `--icon-color`) is documented where it's used, in
|
|
228
238
|
`slidemind-create-slides`.
|
|
229
239
|
|
|
240
|
+
**A download is a found image, not a promised one.** `download-result` registers what it fetched in
|
|
241
|
+
the deck's image registry, with its engine provenance — and that is all it does. Registration
|
|
242
|
+
creates **no** obligation to place the picture on any slide: an image you fetched to satisfy a
|
|
243
|
+
generic illustration stays an ordinary sourced asset, sized and placed like any other. It becomes a
|
|
244
|
+
binding obligation only if the **user** chose that exact result for that exact spot and it is
|
|
245
|
+
recorded as an `assetUses` entry in the plan, which `slidemind-create-slides` owns.
|
|
246
|
+
|
|
247
|
+
**Never fill someone else's obligation with a search result.** If a slide already carries an
|
|
248
|
+
`original` use — an image the user supplied — it is satisfied by those bytes and nothing else.
|
|
249
|
+
Searching for something that looks like it, downloading a close match, or generating a replacement
|
|
250
|
+
is the one failure this whole path exists to prevent, whatever the draft looks like. A missing or
|
|
251
|
+
changed source is repaired by restoring or re-importing it, never by substitution.
|
|
252
|
+
|
|
230
253
|
Image results print their **intrinsic `width×height`** next to the title — the engine indexes it, so
|
|
231
254
|
the aspect ratio is yours *before* you fetch anything. Carry it into the pick: a result whose shape
|
|
232
255
|
doesn't suit the slot you have in mind is the wrong pick, whatever it depicts. (`download-result`
|
|
@@ -236,7 +259,7 @@ re-states the size, measured from the delivered bytes.)
|
|
|
236
259
|
|
|
237
260
|
These two skills compose. When the user is **authoring** a deck (that's `slidemind-create-slides`)
|
|
238
261
|
and wants an **existing** slide incorporated, reach for this skill's `add-slide`: it folds the
|
|
239
|
-
existing slide into the same `decks/<slug
|
|
262
|
+
existing slide into the same `decks/<slug>/.slidemind/slides/` directory as the authored JSX. The reused
|
|
240
263
|
`.pptx` and the authored `.jsx` coexist in play order (numeric filename prefix) and the reused slide
|
|
241
264
|
is **not lost on re-push**. Hand back to `slidemind-create-slides` for any new content authoring.
|
|
242
265
|
|
|
@@ -247,16 +270,16 @@ insert live, fold into a deck, engine fetch). You are the local harness — this
|
|
|
247
270
|
|
|
248
271
|
| Verb (`workflow/search.md`) | Your equivalent (local harness) |
|
|
249
272
|
|---|---|
|
|
250
|
-
| **discover engines** ("list what you can reach") | `slidemind ls engines [--type collection\|search\|scope] [--subtype …]` — returns the engine catalog **plus the search scopes** (pick an `id`; never guess one). The catalog is
|
|
251
|
-
| **engine search** (with `intent`) | `slidemind search "<query>" --engine <id> --intent <auto\|content\|visual> [--top N] [--deck <deck>]` — leave `--to` off → a `searchId` + numbered results, plus the exact follow-up commands for the path it took
|
|
273
|
+
| **discover engines** ("list what you can reach") | `slidemind ls engines [--type collection\|search\|scope] [--subtype …]` — returns the engine catalog **plus the search scopes** (pick an `id`; never guess one). The catalog is per-user; `--to` is accepted but never needed. No window needed where the add-in serves the pane-free routes. |
|
|
274
|
+
| **engine search** (with `intent`) | `slidemind search "<query>" --engine <id> --intent <auto\|content\|visual> [--top N] [--deck <deck>]` — leave `--to` off → a `searchId` + numbered results, plus the exact follow-up commands for the path it took; each result may carry a `source:` link — **always cite it back** |
|
|
252
275
|
| **search a scope** (unfiltered corpus, no engine) | `slidemind search "<query>" --engine <scope:all\|scope:sharepoint> --result-type <slide\|image> [--intent …]` — `--result-type` is required for a scope (defaults to `slide`). Results reuse identically to engine results. |
|
|
253
276
|
| **pull an on-demand thumbnail** for a stored result | `slidemind view-slide --search <searchId> --pick <n>` — SLIDE-library results only; image/icon results have no preview ("no image returned") — download and Read the file instead (add `--to <searchWindow>` only on the relayed path) · or `slidemind search … --json` for the structured payload. |
|
|
254
277
|
| **read a result's SOURCE deck** (the presentation it came from) | `slidemind read-source --search <searchId> --pick <n> [--from-slide N] [--to-slide N] [--out <file.md>]` — Markdown of the whole source presentation, one section per slide (add `--to <searchWindow>` only on the relayed path). Indexed text, not the live file. Slide results only. |
|
|
255
278
|
| **insert live** (reuse a slide → the open window) | `slidemind insert-slide --search <searchId> --pick <n[,n,…]> --to <presId> [--at N]` — **host-required**: the slide lands in that open window |
|
|
256
|
-
| **fold into a deck** (reuse a slide → deck source) | `slidemind add-slide --search <searchId> --pick <n[,n,…]> --deck <deck> [--at N] [--json]` → writes `decks/<slug
|
|
279
|
+
| **fold into a deck** (reuse a slide → deck source) | `slidemind add-slide --search <searchId> --pick <n[,n,…]> --deck <deck> [--at N] [--json]` → writes `decks/<slug>/.slidemind/slides/NN-reused-*.pptx` (add `--to <searchWindow>` only on the relayed path, where extraction runs on the search's window) |
|
|
257
280
|
| **read a local `.pptx`** (host-free — no engine, no window) | `slidemind read <file.pptx> --mode summary\|raw` — list/read a local file's slides in play order without a host; use the printed numbers as `--pick` for `add-slide --from` |
|
|
258
|
-
| **fold a LOCAL slide into a deck** (`--from`, host-free) | `slidemind add-slide --from <file.pptx> --pick <n[,n,…]> --deck <deck> [--at N]` → same `decks/<slug
|
|
259
|
-
| **engine fetch** (reuse an image asset) | `slidemind download-result --search <searchId> --pick <n[,n,…]> --deck <deck> [--icon-color <hex[,hex,…]>]` — writes into `decks/<slug
|
|
281
|
+
| **fold a LOCAL slide into a deck** (`--from`, host-free) | `slidemind add-slide --from <file.pptx> --pick <n[,n,…]> --deck <deck> [--at N]` → same `decks/<slug>/.slidemind/slides/NN-reused-*.pptx` output as the engine path; `--from` replaces `--search`/`--to` (mutually exclusive with `--search`; no host). Live delivery = fold + `slidemind push <deck>` |
|
|
282
|
+
| **engine fetch** (reuse an image asset) | `slidemind download-result --search <searchId> --pick <n[,n,…]> --deck <deck> [--icon-color <hex[,hex,…]>]` — writes into `decks/<slug>/.slidemind/assets/` (add `--to <searchWindow>` only on the relayed path; recolor descriptor + tinting are covered in `slidemind-create-slides`) |
|
|
260
283
|
|
|
261
284
|
Everything else in `workflow/search.md` — the engine-discovery discipline, content-vs-visual
|
|
262
285
|
judgement, the picking and reuse craft — applies to you unchanged.
|