deepvista-cli 0.4.0__tar.gz → 0.6.0__tar.gz
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.
- deepvista_cli-0.6.0/.release-please-manifest.json +3 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/CHANGELOG.md +19 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/PKG-INFO +1 -1
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/skill.py +108 -1
- deepvista_cli-0.6.0/deepvista_cli/commands/task_queue.py +669 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/main.py +3 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/.claude-plugin/plugin.json +1 -1
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/pyproject.toml +1 -1
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/skill.md +31 -0
- deepvista_cli-0.6.0/tests/test_task_queue_commands.py +698 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/uv.lock +1 -1
- deepvista_cli-0.4.0/.release-please-manifest.json +0 -3
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/.claude-plugin/marketplace.json +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/.github/workflows/ci.yml +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/.github/workflows/publish.yml +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/.github/workflows/release-please.yml +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/.gitignore +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/.pre-commit-config.yaml +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/CLAUDE.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/CONTRIBUTING.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/LICENSE +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/README.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/agent_catalog.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/auth/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/auth/callback_server.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/auth/login.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/auth/tokens.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/client/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/client/http.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/client/origin.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/agents.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/auth.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/card.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/chat.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/config.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/lint.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/memory.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/notes.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/schedule.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/session.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/upgrade.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/commands/vistabase.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/config.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/output/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/output/formatter.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/resources/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/resources/workflow_host_runtime.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/session_note.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/skill_catalog.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/tui/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/tui/app.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/deepvista_cli/workflow_doc.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/docs/assets/deepvista-banner.png +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/install.ps1 +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/install.sh +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/README.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/README.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/agents/.gitignore +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/commands/deepvista.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/commands/refresh-skills.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/hooks/hooks.json +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/scripts/deepvista-session-end.sh +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/scripts/deepvista-session-start.sh +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/scripts/deepvista-session-turn.sh +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/scripts/deepvista-skill-url.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/scripts/deepvista-sync.sh +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/skills/.gitignore +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/plugins/claude-code/skills/install-deepvista-cli/SKILL.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/release-please-config.json +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/scripts/check_plugin_version.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/SKILL.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/chat.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/lint.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/memory.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/notes.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/openclaw.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/session.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/shared.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/skill-analyze-notes.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/skill-create-from-note.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/skill-import-files.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/skill-research-to-skill.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/vistabase-card.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/deepvista/reference/vistabase.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/skills/dv-workflow/SKILL.md +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/tests/__init__.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/tests/test_agent_id_tagging.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/tests/test_session_note_format.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/tests/test_skill_catalog.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/tests/test_skill_commands.py +0 -0
- {deepvista_cli-0.4.0 → deepvista_cli-0.6.0}/uninstall.sh +0 -0
|
@@ -37,6 +37,25 @@ users what's new between the version they have installed and the latest release.
|
|
|
37
37
|
adopts a pre-existing server-side row instead of failing when the local
|
|
38
38
|
file is missing.
|
|
39
39
|
|
|
40
|
+
## [0.6.0](https://github.com/DeepVista-AI/deepvista-cli/compare/v0.5.0...v0.6.0) (2026-06-22)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Features
|
|
44
|
+
|
|
45
|
+
* **DV-1079:** poll by default in task_queue run with single-instance lock ([#162](https://github.com/DeepVista-AI/deepvista-cli/issues/162)) ([eef464e](https://github.com/DeepVista-AI/deepvista-cli/commit/eef464e3ab6cb1591130b79903238a1a7327bc61))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Documentation
|
|
49
|
+
|
|
50
|
+
* add direct import path for downloaded skill markdown files ([#160](https://github.com/DeepVista-AI/deepvista-cli/issues/160)) ([31b35b9](https://github.com/DeepVista-AI/deepvista-cli/commit/31b35b9608e75759547d1bb803cc04b3bed2fea1))
|
|
51
|
+
|
|
52
|
+
## [0.5.0](https://github.com/DeepVista-AI/deepvista-cli/compare/v0.4.0...v0.5.0) (2026-06-04)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Features
|
|
56
|
+
|
|
57
|
+
* **DV-936:** task_queue run/list/setup commands ([#155](https://github.com/DeepVista-AI/deepvista-cli/issues/155)) ([0d90691](https://github.com/DeepVista-AI/deepvista-cli/commit/0d9069106d14068d657e16415be80dec95f12085))
|
|
58
|
+
|
|
40
59
|
## [0.4.0](https://github.com/DeepVista-AI/deepvista-cli/compare/v0.3.0...v0.4.0) (2026-06-03)
|
|
41
60
|
|
|
42
61
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepvista-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: CLI for DeepVista — chat, notes, skills, and memory from your terminal.
|
|
5
5
|
Project-URL: Homepage, https://deepvista.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/DeepVista-AI/deepvista-cli
|
|
@@ -133,9 +133,37 @@ def skill_get(ctx: click.Context, skill_id: str) -> None:
|
|
|
133
133
|
"tool_plan."
|
|
134
134
|
),
|
|
135
135
|
)
|
|
136
|
+
@click.option(
|
|
137
|
+
"--webhook",
|
|
138
|
+
is_flag=True,
|
|
139
|
+
default=False,
|
|
140
|
+
help=(
|
|
141
|
+
"Mark this as a webhook-queued run (DV-955). Appends the task-queue "
|
|
142
|
+
"completion contract so the host agent reports the queue task after "
|
|
143
|
+
"`skill complete`. Set automatically on commands the webhook enqueues."
|
|
144
|
+
),
|
|
145
|
+
)
|
|
146
|
+
@click.option(
|
|
147
|
+
"--best-effort",
|
|
148
|
+
is_flag=True,
|
|
149
|
+
default=False,
|
|
150
|
+
help=(
|
|
151
|
+
"Unattended run: instruct the host agent to answer open questions "
|
|
152
|
+
"from the vistabase instead of stalling, note assumptions, and only "
|
|
153
|
+
"pause on hard blockers (DV-955)."
|
|
154
|
+
),
|
|
155
|
+
)
|
|
136
156
|
@click.option("--dry-run", is_flag=True, default=False, help="Preview what would happen without making any changes.")
|
|
137
157
|
@click.pass_context
|
|
138
|
-
def skill_run(
|
|
158
|
+
def skill_run(
|
|
159
|
+
ctx: click.Context,
|
|
160
|
+
skill_id: str,
|
|
161
|
+
user_input: str | None,
|
|
162
|
+
mode: str,
|
|
163
|
+
webhook: bool,
|
|
164
|
+
best_effort: bool,
|
|
165
|
+
dry_run: bool,
|
|
166
|
+
) -> None:
|
|
139
167
|
"""Run a Skill — host mode by default; ``--mode deepvista`` delegates the whole run server-side.
|
|
140
168
|
|
|
141
169
|
> [!CAUTION] This is a write command — host mode acquires the parent
|
|
@@ -160,6 +188,36 @@ def skill_run(ctx: click.Context, skill_id: str, user_input: str | None, mode: s
|
|
|
160
188
|
_skill_run_deepvista(ctx, skill_id, user_input, dry_run=dry_run)
|
|
161
189
|
return
|
|
162
190
|
|
|
191
|
+
emit_host_run_packet(
|
|
192
|
+
ctx,
|
|
193
|
+
skill_id,
|
|
194
|
+
user_input,
|
|
195
|
+
mode,
|
|
196
|
+
dry_run=dry_run,
|
|
197
|
+
webhook=webhook,
|
|
198
|
+
best_effort=best_effort,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def emit_host_run_packet(
|
|
203
|
+
ctx: click.Context,
|
|
204
|
+
skill_id: str,
|
|
205
|
+
user_input: str | None,
|
|
206
|
+
mode: str = "host",
|
|
207
|
+
*,
|
|
208
|
+
dry_run: bool = False,
|
|
209
|
+
webhook: bool = False,
|
|
210
|
+
best_effort: bool = False,
|
|
211
|
+
task_id: str | None = None,
|
|
212
|
+
) -> None:
|
|
213
|
+
"""Fetch the skill, acquire the run lock, and print the host run packet.
|
|
214
|
+
|
|
215
|
+
Shared by ``skill run`` (host / auto modes) and ``task_queue run --host``
|
|
216
|
+
(DV-955), which emits packets for webhook-queued workflow tasks instead
|
|
217
|
+
of subprocess-executing them — a queued workflow needs the surrounding
|
|
218
|
+
host agent to drive it. ``task_id`` (only known on the task-queue path)
|
|
219
|
+
threads the queue entry into the completion contract.
|
|
220
|
+
"""
|
|
163
221
|
# host / auto: fetch the card, optionally acquire the lock, and emit a
|
|
164
222
|
# run packet the host agent drives.
|
|
165
223
|
card = _client(ctx).post("/get_context_card", {"card_id": skill_id, "card_type": "skill"})
|
|
@@ -196,7 +254,11 @@ def skill_run(ctx: click.Context, skill_id: str, user_input: str | None, mode: s
|
|
|
196
254
|
"phase_routes": phase_routes,
|
|
197
255
|
"user_input": user_input or "",
|
|
198
256
|
"skill_status": card.get("status", ""),
|
|
257
|
+
"webhook": webhook,
|
|
258
|
+
"best_effort": best_effort,
|
|
199
259
|
}
|
|
260
|
+
if task_id:
|
|
261
|
+
run_header["task_id"] = task_id
|
|
200
262
|
|
|
201
263
|
if dry_run:
|
|
202
264
|
format_output(
|
|
@@ -222,6 +284,12 @@ def skill_run(ctx: click.Context, skill_id: str, user_input: str | None, mode: s
|
|
|
222
284
|
click.echo("---")
|
|
223
285
|
click.echo()
|
|
224
286
|
click.echo(_load_host_runtime_contract())
|
|
287
|
+
if best_effort:
|
|
288
|
+
click.echo()
|
|
289
|
+
click.echo(_BEST_EFFORT_STANZA)
|
|
290
|
+
if webhook:
|
|
291
|
+
click.echo()
|
|
292
|
+
click.echo(_webhook_task_stanza(task_id))
|
|
225
293
|
|
|
226
294
|
|
|
227
295
|
def _skill_run_deepvista(
|
|
@@ -258,6 +326,45 @@ def _load_host_runtime_contract() -> str:
|
|
|
258
326
|
return resources.files("deepvista_cli.resources").joinpath("workflow_host_runtime.md").read_text(encoding="utf-8")
|
|
259
327
|
|
|
260
328
|
|
|
329
|
+
# Appended to the runtime contract for unattended runs (DV-955). The run was
|
|
330
|
+
# triggered by a webhook — there is no human in the loop to answer questions.
|
|
331
|
+
_BEST_EFFORT_STANZA = """\
|
|
332
|
+
## Best-effort mode (unattended run)
|
|
333
|
+
|
|
334
|
+
This run was triggered without a human in the loop. Do NOT stall waiting
|
|
335
|
+
for answers:
|
|
336
|
+
|
|
337
|
+
- When a step needs information, search the vistabase first:
|
|
338
|
+
`deepvista card +search "…"`, `deepvista vistabase +search "…"`,
|
|
339
|
+
`deepvista notes list`. Prefer an answer found there over asking.
|
|
340
|
+
- When nothing answers, make the most reasonable assumption, state it in
|
|
341
|
+
the phase's artifact note, and move to the next step.
|
|
342
|
+
- Reserve `deepvista skill phase pause` for hard blockers only (missing
|
|
343
|
+
credentials, unavailable tools) — never for open questions.
|
|
344
|
+
- Anything that would normally be sent externally (emails, invites) must
|
|
345
|
+
be left as a DRAFT for human review, never dispatched."""
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
def _webhook_task_stanza(task_id: str | None) -> str:
|
|
349
|
+
"""Completion contract for webhook-queued runs (DV-955).
|
|
350
|
+
|
|
351
|
+
The queue entry stays ``running`` until the host agent reports it —
|
|
352
|
+
nothing else will, so skipping this leaves a permanently stuck task.
|
|
353
|
+
"""
|
|
354
|
+
task_ref = task_id or "<task_id from `deepvista task_queue list`>"
|
|
355
|
+
return f"""\
|
|
356
|
+
## Webhook task completion
|
|
357
|
+
|
|
358
|
+
This run came off the agent task queue. The queue entry stays `running`
|
|
359
|
+
until YOU report it — after `deepvista skill complete` (or on failure):
|
|
360
|
+
|
|
361
|
+
```
|
|
362
|
+
deepvista task_queue complete {task_ref} --status completed
|
|
363
|
+
# or, when the run could not finish:
|
|
364
|
+
deepvista task_queue complete {task_ref} --status failed --note "<one short sentence>"
|
|
365
|
+
```"""
|
|
366
|
+
|
|
367
|
+
|
|
261
368
|
# ---------------------------------------------------------------------------
|
|
262
369
|
# Phase mutators — used by host agents driving the workflow themselves
|
|
263
370
|
# ---------------------------------------------------------------------------
|