deepvista-cli 0.2.0__tar.gz → 0.3.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.3.0/.release-please-manifest.json +3 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/CHANGELOG.md +12 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/PKG-INFO +1 -1
- deepvista_cli-0.3.0/deepvista_cli/commands/schedule.py +169 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/main.py +3 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/output/formatter.py +2 -2
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/.claude-plugin/plugin.json +1 -1
- deepvista_cli-0.3.0/plugins/claude-code/commands/deepvista.md +115 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/pyproject.toml +1 -1
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/uv.lock +1 -1
- deepvista_cli-0.2.0/.release-please-manifest.json +0 -3
- deepvista_cli-0.2.0/plugins/claude-code/commands/deepvista.md +0 -129
- deepvista_cli-0.2.0/plugins/claude-code/skills/daily-planning/SKILL.md +0 -161
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/.claude-plugin/marketplace.json +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/.github/workflows/ci.yml +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/.github/workflows/publish.yml +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/.github/workflows/release-please.yml +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/.gitignore +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/.pre-commit-config.yaml +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/CLAUDE.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/CONTRIBUTING.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/LICENSE +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/README.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/agent_catalog.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/auth/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/auth/callback_server.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/auth/login.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/auth/tokens.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/client/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/client/http.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/client/origin.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/agents.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/auth.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/card.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/chat.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/config.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/lint.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/memory.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/notes.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/session.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/skill.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/upgrade.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/commands/vistabase.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/config.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/output/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/resources/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/resources/workflow_host_runtime.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/session_note.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/skill_catalog.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/tui/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/tui/app.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/workflow_doc.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/docs/assets/deepvista-banner.png +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/install.sh +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/README.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/README.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/agents/.gitignore +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/commands/refresh-skills.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/hooks/hooks.json +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-session-end.sh +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-session-start.sh +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-session-turn.sh +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-skill-url.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-sync.sh +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/skills/.gitignore +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/skills/install-deepvista-cli/SKILL.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/release-please-config.json +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/scripts/check_plugin_version.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/SKILL.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/chat.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/lint.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/memory.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/notes.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/openclaw.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/session.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/shared.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-analyze-notes.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-create-from-note.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-import-files.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-research-to-skill.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/vistabase-card.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/vistabase.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/dv-workflow/SKILL.md +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/tests/__init__.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/tests/test_agent_id_tagging.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/tests/test_session_note_format.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/tests/test_skill_catalog.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/tests/test_skill_commands.py +0 -0
- {deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/uninstall.sh +0 -0
|
@@ -37,6 +37,18 @@ 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.3.0](https://github.com/DeepVista-AI/deepvista-cli/compare/v0.2.0...v0.3.0) (2026-05-31)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Features
|
|
44
|
+
|
|
45
|
+
* **DV-871:** move daily-planning to server; add schedule command ([#151](https://github.com/DeepVista-AI/deepvista-cli/issues/151)) ([7c317e7](https://github.com/DeepVista-AI/deepvista-cli/commit/7c317e7d6f71763f6622354b8581ead8b10ef8ea))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Bug Fixes
|
|
49
|
+
|
|
50
|
+
* **types:** mark output_error as NoReturn to fix Pyright errors in schedule.py ([#153](https://github.com/DeepVista-AI/deepvista-cli/issues/153)) ([7ac8b12](https://github.com/DeepVista-AI/deepvista-cli/commit/7ac8b12f1b10a94cd6dbe8533b122a2cf8489228))
|
|
51
|
+
|
|
40
52
|
## [0.2.0](https://github.com/DeepVista-AI/deepvista-cli/compare/v0.1.18...v0.2.0) (2026-05-28)
|
|
41
53
|
|
|
42
54
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepvista-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.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
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"""deepvista schedule — opt-in recurring runs of the daily-planning skill.
|
|
2
|
+
|
|
3
|
+
Daily planning generation lives on the DeepVista server (the
|
|
4
|
+
``deepvista-daily-planning`` skill). This command lets the user *explicitly*
|
|
5
|
+
activate a recurring server job that generates today's planning note on a cron
|
|
6
|
+
schedule — nothing runs automatically until the user opts in here, which keeps
|
|
7
|
+
token spend under their control.
|
|
8
|
+
|
|
9
|
+
Under the hood each "activation" is a row in the server's ``scheduled_jobs``
|
|
10
|
+
table whose ``prompt`` asks the agent to run the daily-planning skill. The
|
|
11
|
+
heartbeat dispatcher drains due rows and runs the agent.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import click
|
|
17
|
+
|
|
18
|
+
from deepvista_cli.client.http import DeepVistaClient
|
|
19
|
+
from deepvista_cli.output.formatter import format_output, output_error
|
|
20
|
+
|
|
21
|
+
# The server-side workflow skill that generates the planning note.
|
|
22
|
+
DAILY_PLANNING_SKILL = "deepvista-daily-planning"
|
|
23
|
+
# Stable title used to find this job again (activate is idempotent on it).
|
|
24
|
+
JOB_TITLE = "Daily Planning"
|
|
25
|
+
# Cron is evaluated in UTC server-side (no per-user timezone yet — see DV-879).
|
|
26
|
+
DEFAULT_DAILY_CRON = "0 8 * * *"
|
|
27
|
+
DEFAULT_WEEKLY_CRON = "0 8 * * 1"
|
|
28
|
+
|
|
29
|
+
# Columns shown in `--format table`.
|
|
30
|
+
_JOB_COLUMNS = ["id", "title", "cron_schedule", "enabled", "next_run_at", "last_run_at"]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _client(ctx: click.Context) -> DeepVistaClient:
|
|
34
|
+
return ctx.obj._client
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _find_daily_planning_job(ctx: click.Context) -> dict | None:
|
|
38
|
+
"""Return the existing daily-planning job for this user, or None.
|
|
39
|
+
|
|
40
|
+
Matches on the stable ``JOB_TITLE`` so repeated activations re-use the same
|
|
41
|
+
row instead of stacking duplicates.
|
|
42
|
+
"""
|
|
43
|
+
data = _client(ctx).get("/scheduled-jobs")
|
|
44
|
+
for job in data.get("jobs", []):
|
|
45
|
+
if job.get("title") == JOB_TITLE:
|
|
46
|
+
return job
|
|
47
|
+
return None
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@click.group("schedule")
|
|
51
|
+
def schedule_group() -> None:
|
|
52
|
+
"""Manage the recurring daily-planning job (opt-in)."""
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@schedule_group.command("activate")
|
|
56
|
+
@click.option("--cron", "cron_schedule", default=None, help="5-field cron in UTC (default: daily 08:00 UTC).")
|
|
57
|
+
@click.option("--weekly", is_flag=True, default=False, help="Run weekly (Mon 08:00 UTC) instead of daily.")
|
|
58
|
+
@click.pass_context
|
|
59
|
+
def schedule_activate(ctx: click.Context, cron_schedule: str | None, weekly: bool) -> None:
|
|
60
|
+
"""Activate the recurring daily-planning job.
|
|
61
|
+
|
|
62
|
+
Idempotent: if a daily-planning job already exists it is re-enabled rather
|
|
63
|
+
than duplicated. To change the cron of an existing job, deactivate + delete
|
|
64
|
+
it first, then activate again with a new --cron.
|
|
65
|
+
"""
|
|
66
|
+
cadence = "weekly" if weekly else "daily"
|
|
67
|
+
if cron_schedule is None:
|
|
68
|
+
cron_schedule = DEFAULT_WEEKLY_CRON if weekly else DEFAULT_DAILY_CRON
|
|
69
|
+
|
|
70
|
+
existing = _find_daily_planning_job(ctx)
|
|
71
|
+
if existing is not None:
|
|
72
|
+
if existing.get("enabled"):
|
|
73
|
+
format_output(
|
|
74
|
+
{"status": "already_active", "job": existing},
|
|
75
|
+
ctx.obj.output_format,
|
|
76
|
+
title="Daily planning already active",
|
|
77
|
+
)
|
|
78
|
+
return
|
|
79
|
+
resp = _client(ctx).patch(f"/scheduled-jobs/{existing['id']}", {"enabled": True})
|
|
80
|
+
format_output(
|
|
81
|
+
{"status": "reactivated", "job": resp.get("job", resp)},
|
|
82
|
+
ctx.obj.output_format,
|
|
83
|
+
title="Daily planning reactivated",
|
|
84
|
+
)
|
|
85
|
+
return
|
|
86
|
+
|
|
87
|
+
prompt = (
|
|
88
|
+
f"Run the {DAILY_PLANNING_SKILL} skill to generate today's daily "
|
|
89
|
+
f"planning note (cadence: {cadence}). List the workflow Skills that "
|
|
90
|
+
f"should run today as context-card chips in the note's Planning section."
|
|
91
|
+
)
|
|
92
|
+
resp = _client(ctx).post(
|
|
93
|
+
"/scheduled-jobs",
|
|
94
|
+
{
|
|
95
|
+
"prompt": prompt,
|
|
96
|
+
"cron_schedule": cron_schedule,
|
|
97
|
+
"title": JOB_TITLE,
|
|
98
|
+
"enabled": True,
|
|
99
|
+
},
|
|
100
|
+
)
|
|
101
|
+
if not resp.get("success"):
|
|
102
|
+
output_error(1, "Failed to activate daily planning", resp.get("error", ""))
|
|
103
|
+
format_output(
|
|
104
|
+
{"status": "activated", "cadence": cadence, "job": resp.get("job", resp)},
|
|
105
|
+
ctx.obj.output_format,
|
|
106
|
+
title="Daily planning activated",
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
@schedule_group.command("deactivate")
|
|
111
|
+
@click.pass_context
|
|
112
|
+
def schedule_deactivate(ctx: click.Context) -> None:
|
|
113
|
+
"""Disable the daily-planning job (keeps the row so it can be re-activated)."""
|
|
114
|
+
existing = _find_daily_planning_job(ctx)
|
|
115
|
+
if existing is None:
|
|
116
|
+
output_error(1, "No daily-planning job found", "Run: deepvista schedule activate")
|
|
117
|
+
if not existing.get("enabled"):
|
|
118
|
+
format_output(
|
|
119
|
+
{"status": "already_inactive", "job": existing},
|
|
120
|
+
ctx.obj.output_format,
|
|
121
|
+
title="Daily planning already inactive",
|
|
122
|
+
)
|
|
123
|
+
return
|
|
124
|
+
resp = _client(ctx).patch(f"/scheduled-jobs/{existing['id']}", {"enabled": False})
|
|
125
|
+
format_output(
|
|
126
|
+
{"status": "deactivated", "job": resp.get("job", resp)},
|
|
127
|
+
ctx.obj.output_format,
|
|
128
|
+
title="Daily planning deactivated",
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
@schedule_group.command("list")
|
|
133
|
+
@click.pass_context
|
|
134
|
+
def schedule_list(ctx: click.Context) -> None:
|
|
135
|
+
"""List the caller's scheduled jobs (read-only)."""
|
|
136
|
+
data = _client(ctx).get("/scheduled-jobs")
|
|
137
|
+
jobs = data.get("jobs", [])
|
|
138
|
+
format_output(
|
|
139
|
+
{"jobs": jobs, "count": len(jobs)},
|
|
140
|
+
ctx.obj.output_format,
|
|
141
|
+
columns=_JOB_COLUMNS,
|
|
142
|
+
title="Scheduled Jobs",
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@schedule_group.command("delete")
|
|
147
|
+
@click.argument("job_id", required=False)
|
|
148
|
+
@click.pass_context
|
|
149
|
+
def schedule_delete(ctx: click.Context, job_id: str | None) -> None:
|
|
150
|
+
"""Delete a scheduled job permanently.
|
|
151
|
+
|
|
152
|
+
With no JOB_ID, deletes the daily-planning job. Use this (then ``activate``)
|
|
153
|
+
to change a job's cron, which PATCH can't edit. Pass ``--dry-run`` on the
|
|
154
|
+
root command to preview without deleting.
|
|
155
|
+
"""
|
|
156
|
+
if job_id is None:
|
|
157
|
+
existing = _find_daily_planning_job(ctx)
|
|
158
|
+
if existing is None:
|
|
159
|
+
output_error(1, "No daily-planning job found", "Pass a JOB_ID, or run: deepvista schedule list")
|
|
160
|
+
job_id = existing["id"]
|
|
161
|
+
|
|
162
|
+
resp = _client(ctx).delete(f"/scheduled-jobs/{job_id}")
|
|
163
|
+
if not resp.get("success"):
|
|
164
|
+
output_error(1, "Failed to delete scheduled job", resp.get("error", ""))
|
|
165
|
+
format_output(
|
|
166
|
+
{"status": "deleted", "job_id": job_id},
|
|
167
|
+
ctx.obj.output_format,
|
|
168
|
+
title="Scheduled job deleted",
|
|
169
|
+
)
|
|
@@ -31,6 +31,7 @@ from deepvista_cli.commands.config import config_group
|
|
|
31
31
|
from deepvista_cli.commands.lint import lint_command
|
|
32
32
|
from deepvista_cli.commands.memory import vistabase_group
|
|
33
33
|
from deepvista_cli.commands.notes import notes_group
|
|
34
|
+
from deepvista_cli.commands.schedule import schedule_group
|
|
34
35
|
from deepvista_cli.commands.session import session_group
|
|
35
36
|
from deepvista_cli.commands.skill import skill_group
|
|
36
37
|
from deepvista_cli.commands.upgrade import upgrade_command
|
|
@@ -87,6 +88,8 @@ for _name, _cmd in card_group.commands.items():
|
|
|
87
88
|
cli.add_command(vistabase_group, name="memory")
|
|
88
89
|
# Agent orchestration
|
|
89
90
|
cli.add_command(agents_group)
|
|
91
|
+
# Opt-in recurring daily-planning job
|
|
92
|
+
cli.add_command(schedule_group)
|
|
90
93
|
# Agent session transcripts (DV-742) — `init` / `tick` / `finalize`
|
|
91
94
|
cli.add_command(session_group)
|
|
92
95
|
# Supporting commands
|
|
@@ -8,7 +8,7 @@ from __future__ import annotations
|
|
|
8
8
|
|
|
9
9
|
import json
|
|
10
10
|
import sys
|
|
11
|
-
from typing import Any
|
|
11
|
+
from typing import Any, NoReturn
|
|
12
12
|
|
|
13
13
|
import click
|
|
14
14
|
|
|
@@ -170,7 +170,7 @@ def output_table(data: Any, columns: list[str] | None = None, title: str | None
|
|
|
170
170
|
output_json(data)
|
|
171
171
|
|
|
172
172
|
|
|
173
|
-
def output_error(code: int, message: str, detail: str = "") ->
|
|
173
|
+
def output_error(code: int, message: str, detail: str = "") -> NoReturn:
|
|
174
174
|
"""Write structured error to stderr and exit."""
|
|
175
175
|
err = {"error": {"code": code, "message": message}}
|
|
176
176
|
if detail:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deepvista",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Remote-managed skill catalog from DeepVista. Auto-syncs thin stubs into the plugin's skills dir on SessionStart; full bodies are lazy-loaded at invocation time.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "DeepVista AI",
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: DeepVista controls — `run` executes today's Daily Planning note (each workflow via a subagent); no args shows help
|
|
3
|
+
argument-hint: "[run]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
DeepVista control surface. Behaviour depends on `$ARGUMENTS`:
|
|
7
|
+
|
|
8
|
+
- **No argument** (or any value other than `run`) → print the help block below.
|
|
9
|
+
- **`run`** → execute today's *Daily Planning* note: launch a subagent per
|
|
10
|
+
workflow Skill listed in its `## Planning` section, then append a
|
|
11
|
+
consolidated `## Summary` back onto the note.
|
|
12
|
+
|
|
13
|
+
**Generation moved server-side.** Today's planning note is created by the
|
|
14
|
+
DeepVista server agent via the `deepvista-daily-planning` skill — either on a
|
|
15
|
+
schedule you opt into (`deepvista schedule activate`) or on demand. This command
|
|
16
|
+
only *processes* (runs) a note that already exists. Planning notes are regular
|
|
17
|
+
DeepVista notes (`type=note`) tagged ``daily-planning`` + ``date:YYYYMMDD``.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## If `$ARGUMENTS` is empty or not `run`
|
|
22
|
+
|
|
23
|
+
Print this verbatim, then stop:
|
|
24
|
+
|
|
25
|
+
> **DeepVista — Claude Code commands**
|
|
26
|
+
>
|
|
27
|
+
> - `/deepvista run` — execute today's *Daily Planning* note. Reads the note's
|
|
28
|
+
> `## Planning` workflow chips and runs each workflow Skill with a subagent,
|
|
29
|
+
> then appends the results under a `## Summary — <timestamp>` block.
|
|
30
|
+
> - `/refresh-skills` — resync the DeepVista skill catalog and agent
|
|
31
|
+
> definitions immediately (bypasses the 60-minute throttle).
|
|
32
|
+
>
|
|
33
|
+
> **Generating today's plan**
|
|
34
|
+
>
|
|
35
|
+
> - Planning is generated by the DeepVista server, not here. Activate a daily
|
|
36
|
+
> run with `deepvista schedule activate` (or `--weekly`), or ask DeepVista to
|
|
37
|
+
> run the `deepvista-daily-planning` skill on demand.
|
|
38
|
+
> - `deepvista schedule list` / `deepvista schedule deactivate` manage it.
|
|
39
|
+
>
|
|
40
|
+
> **Tips**
|
|
41
|
+
>
|
|
42
|
+
> - Need help with the CLI itself? `deepvista --help` or `deepvista <group> --help`.
|
|
43
|
+
|
|
44
|
+
## If `$ARGUMENTS` is `run`
|
|
45
|
+
|
|
46
|
+
Execute today's planning note.
|
|
47
|
+
|
|
48
|
+
### Step 1 — Find today's planning note
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
TODAY=$(date +%Y%m%d)
|
|
52
|
+
deepvista --format json card +search "Daily Planning $TODAY" --limit 5
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Pick the card whose `tags` include both ``daily-planning`` and ``date:$TODAY``,
|
|
56
|
+
then fetch its full body:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
deepvista --format json notes get <note-id>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If **no note exists for today**, stop and tell the user to generate one first —
|
|
63
|
+
generation is server-side now: `deepvista schedule activate` for a recurring
|
|
64
|
+
run, or ask DeepVista to run the `deepvista-daily-planning` skill on demand. Do
|
|
65
|
+
**not** try to generate the plan from this command.
|
|
66
|
+
|
|
67
|
+
### Step 2 — Run each workflow with a subagent
|
|
68
|
+
|
|
69
|
+
Read the note's `## Planning` section. It lists the workflow Skills to run today
|
|
70
|
+
as context-card chips (`<contextCardBlock cardType="skill" id="...">`). You don't
|
|
71
|
+
need to hand-parse anything mechanically — read the note and, for each workflow
|
|
72
|
+
chip in order, launch a subagent to load and run that workflow Skill end-to-end
|
|
73
|
+
(`deepvista skill run <skill-id>` drives it host-side). Give each subagent the
|
|
74
|
+
planning note's intent so it has context.
|
|
75
|
+
|
|
76
|
+
For each workflow, capture:
|
|
77
|
+
|
|
78
|
+
- **Time** — how long the run took (or start/finish).
|
|
79
|
+
- **Output** — the deliverable / where it landed (note id, card, artifact).
|
|
80
|
+
|
|
81
|
+
If a chip's skill id can't be resolved or a run fails, record the error for that
|
|
82
|
+
workflow and continue with the rest — don't abort the whole run.
|
|
83
|
+
|
|
84
|
+
### Step 3 — Append a consolidated summary to the note
|
|
85
|
+
|
|
86
|
+
Build one markdown block:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
## Summary — <YYYY-MM-DD HH:MM>
|
|
90
|
+
|
|
91
|
+
### <Workflow 1 title>
|
|
92
|
+
- Time: <duration>
|
|
93
|
+
- Output: <result / link>
|
|
94
|
+
|
|
95
|
+
### <Workflow 2 title>
|
|
96
|
+
- Time: <duration>
|
|
97
|
+
- Output: <result / link>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Read the current body, append the block, write it back:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
deepvista --format json notes get <note-id>
|
|
104
|
+
# Capture description, append the block, then:
|
|
105
|
+
deepvista notes update <note-id> --content-file -
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Step 4 — Report
|
|
109
|
+
|
|
110
|
+
Tell the user, in two lines:
|
|
111
|
+
|
|
112
|
+
- Which workflows ran (and any that were skipped or failed).
|
|
113
|
+
- The planning note URL (`https://app.deepvista.ai/notes/<id>`).
|
|
114
|
+
|
|
115
|
+
If any step fails, stop and surface the error — do not silently fall through.
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: DeepVista controls — `run` generates + dispatches today's planning note via the daily-planning skill; no args shows help
|
|
3
|
-
argument-hint: "[run]"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
DeepVista control surface. Behaviour depends on `$ARGUMENTS`:
|
|
7
|
-
|
|
8
|
-
- **No argument** (or any value other than `run`) → print the help block below.
|
|
9
|
-
- **`run`** → generate today's *Daily Planning* note via the `daily-planning`
|
|
10
|
-
skill (if one doesn't already exist), dispatch each `## <role>` section to
|
|
11
|
-
its matching `@<role>` subagent, and append a consolidated summary back
|
|
12
|
-
onto the note.
|
|
13
|
-
|
|
14
|
-
Planning notes are stored as regular DeepVista notes (`type=note`) tagged
|
|
15
|
-
``daily-planning`` + ``date:YYYYMMDD``. No dedicated `deepvista planning`
|
|
16
|
-
CLI command exists — read/write everything via `deepvista notes` and
|
|
17
|
-
`deepvista card +search`.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## If `$ARGUMENTS` is empty or not `run`
|
|
22
|
-
|
|
23
|
-
Print this verbatim, then stop:
|
|
24
|
-
|
|
25
|
-
> **DeepVista — Claude Code commands**
|
|
26
|
-
>
|
|
27
|
-
> - `/deepvista run` — generate today's *Daily Planning* note (LLM-reasoned,
|
|
28
|
-
> driven by the `daily-planning` skill: yesterday's progress + last 7 days
|
|
29
|
-
> of cards → per-role tasks), then dispatch each `## <role>` section to
|
|
30
|
-
> the matching `@<role>` subagent. Subagent results are appended back to
|
|
31
|
-
> the planning note under a `## Summary — <timestamp>` block.
|
|
32
|
-
> - `/refresh-skills` — resync the DeepVista skill catalog and agent
|
|
33
|
-
> definitions immediately (bypasses the 60-minute throttle).
|
|
34
|
-
>
|
|
35
|
-
> **Tips**
|
|
36
|
-
>
|
|
37
|
-
> - Want to draft a plan without dispatching? Just say *"draft today's
|
|
38
|
-
> planning note"* and the `daily-planning` skill kicks in.
|
|
39
|
-
> - Personalise a subagent's voice by setting `config.system_prompt` on its
|
|
40
|
-
> managed agent (free text, e.g. *"You are the marketing specialist;
|
|
41
|
-
> follow persona context card persona-mkt-001."*) and re-running
|
|
42
|
-
> `/refresh-skills`. The agent loads the persona card at runtime.
|
|
43
|
-
> - Need help with the CLI itself? `deepvista --help` or `deepvista <group> --help`.
|
|
44
|
-
|
|
45
|
-
## If `$ARGUMENTS` is `run`
|
|
46
|
-
|
|
47
|
-
Execute the daily-planning dispatch workflow.
|
|
48
|
-
|
|
49
|
-
### Step 1 — Find today's planning note (or generate one)
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
TODAY=$(date +%Y%m%d)
|
|
53
|
-
deepvista --format json card +search "Daily Planning $TODAY" --limit 5
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Walk the result and pick the card with both ``daily-planning`` and
|
|
57
|
-
``date:$TODAY`` in `tags`. Two cases:
|
|
58
|
-
|
|
59
|
-
- **No match** → today's note doesn't exist. **Load the `daily-planning`
|
|
60
|
-
skill and follow it end-to-end** to produce today's plan. The skill ends
|
|
61
|
-
by saving the note via `deepvista notes create`. Re-run the search above
|
|
62
|
-
to pick up the new note id.
|
|
63
|
-
|
|
64
|
-
- **Match found** → fetch its full body:
|
|
65
|
-
```bash
|
|
66
|
-
deepvista --format json notes get <note-id>
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Parse `description` and split on `## ` headings. Treat headings that match
|
|
70
|
-
``Workflow today`` or ``Summary`` (case-insensitive) as reserved; everything
|
|
71
|
-
else is a role section keyed by its heading text (lowercased).
|
|
72
|
-
|
|
73
|
-
### Step 2 — Dispatch each role section to its subagent
|
|
74
|
-
|
|
75
|
-
For each `(role, section_markdown)` in the role sections, invoke the
|
|
76
|
-
matching subagent inline. Skip any role with no on-disk `dv-<role>.md`
|
|
77
|
-
definition — the user hasn't registered a managed agent for it yet.
|
|
78
|
-
Example body:
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
@<role>
|
|
82
|
-
|
|
83
|
-
You are dispatched from today's Daily Planning note (id: <note_id>).
|
|
84
|
-
|
|
85
|
-
Your section reads:
|
|
86
|
-
|
|
87
|
-
<section_markdown>
|
|
88
|
-
|
|
89
|
-
Complete it end-to-end. Return your deliverable in the standard subagent
|
|
90
|
-
output format (Frame → Deliverable → Sources → Captured).
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Collect each subagent's full reply.
|
|
94
|
-
|
|
95
|
-
### Step 3 — Append a consolidated summary to the note
|
|
96
|
-
|
|
97
|
-
Build a single markdown block:
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
## Summary — <YYYY-MM-DD HH:MM>
|
|
101
|
-
|
|
102
|
-
### @marketing
|
|
103
|
-
<that subagent's reply>
|
|
104
|
-
|
|
105
|
-
### @engineering
|
|
106
|
-
<that subagent's reply>
|
|
107
|
-
|
|
108
|
-
…
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Read the current body, append the block, write it back:
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
deepvista --format json notes get <note-id>
|
|
115
|
-
# Capture description from JSON, append the block, then:
|
|
116
|
-
deepvista notes update <note-id> --content-file -
|
|
117
|
-
# (pass `description + appended_block` on stdin)
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Step 4 — Report
|
|
121
|
-
|
|
122
|
-
Tell the user, in two lines:
|
|
123
|
-
|
|
124
|
-
- Whether the plan was generated this run (and via which skill), or pulled
|
|
125
|
-
from an existing note.
|
|
126
|
-
- Roles dispatched (and any skipped because no matching subagent existed),
|
|
127
|
-
plus the planning note URL (`https://app.deepvista.ai/notes/<id>`).
|
|
128
|
-
|
|
129
|
-
If any step fails, stop and surface the error — do not silently fall through.
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: daily-planning
|
|
3
|
-
description: |
|
|
4
|
-
Generate today's *Daily Planning* note by reading yesterday's plan (and its
|
|
5
|
-
appended progress summary) along with recent context cards from the last 7
|
|
6
|
-
days — then reason about what carries over, what's new, and what each
|
|
7
|
-
registered `@<role>` managed-agent subagent should own today. Save the
|
|
8
|
-
result as a regular DeepVista note tagged ``daily-planning`` +
|
|
9
|
-
``date:YYYYMMDD``. Use when the user runs `/deepvista run` and today's
|
|
10
|
-
planning note doesn't yet exist, or when the user asks to "draft today's
|
|
11
|
-
plan", "make today's standup", or "regenerate my daily planning note".
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Daily planning — generate today's plan from yesterday's context
|
|
15
|
-
|
|
16
|
-
This skill produces today's *Daily Planning* note as an LLM-reasoned plan,
|
|
17
|
-
not a static template. Planning notes are plain `deepvista notes` cards
|
|
18
|
-
(type=note) tagged ``daily-planning`` + ``date:YYYYMMDD`` — there is no
|
|
19
|
-
dedicated `deepvista planning` subcommand. The flow:
|
|
20
|
-
|
|
21
|
-
1. Read **yesterday's** planning note + appended summary (if it exists).
|
|
22
|
-
2. Read the **last 7 days** of context cards (notes, todos, sessions).
|
|
23
|
-
3. List the **`@<role>` subagents** registered for this user.
|
|
24
|
-
4. Reason about carry-over, new tasks, and blockers.
|
|
25
|
-
5. Save the result as a note via `deepvista notes create`.
|
|
26
|
-
|
|
27
|
-
The CLI does the data lookups; this skill is the reasoning runbook.
|
|
28
|
-
|
|
29
|
-
## Step 1 — Read yesterday's plan
|
|
30
|
-
|
|
31
|
-
Search for yesterday's planning note by tag (titles can be edited; tags
|
|
32
|
-
shouldn't). Hybrid search filtered to `type=note` is the most robust:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
YESTERDAY=$(date -v-1d +%Y%m%d 2>/dev/null || date -d 'yesterday' +%Y%m%d)
|
|
36
|
-
TODAY=$(date +%Y%m%d)
|
|
37
|
-
|
|
38
|
-
deepvista --format json card +search "Daily Planning $YESTERDAY" --limit 5
|
|
39
|
-
# If a match is found, fetch its full body:
|
|
40
|
-
# deepvista --format json notes get <id>
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Parse `description` (yesterday's full markdown — plan + any
|
|
44
|
-
`## Summary — <timestamp>` blocks that `/deepvista run` appended after
|
|
45
|
-
subagents finished). If nothing matches, treat yesterday as a clean slate.
|
|
46
|
-
|
|
47
|
-
## Step 2 — Read the last 7 days of context cards
|
|
48
|
-
|
|
49
|
-
Each call is bounded (`--limit 20`). Skip silently on failure.
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
deepvista --format json notes list --limit 20
|
|
53
|
-
deepvista --format json card list --type todo --limit 20
|
|
54
|
-
deepvista --format json card list --type session --limit 10
|
|
55
|
-
deepvista --format json card +search "progress OR blocker OR shipped OR next" --limit 10
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
For each result, keep only items updated in the last 7 days. Extract:
|
|
59
|
-
|
|
60
|
-
- title
|
|
61
|
-
- last-updated date
|
|
62
|
-
- a one-sentence read of what it implies for today
|
|
63
|
-
|
|
64
|
-
## Step 3 — List the registered `@<role>` subagents
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
ls "${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/plugins/deepvista}/agents/" 2>/dev/null \
|
|
68
|
-
| grep -E '^dv-.*\.md$' \
|
|
69
|
-
| sed 's/^dv-//; s/\.md$//'
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
If the list is empty, default to `marketing,engineering,gtm`. The user can
|
|
73
|
-
register more via `deepvista agents register`.
|
|
74
|
-
|
|
75
|
-
## Step 4 — Reason about today's plan
|
|
76
|
-
|
|
77
|
-
You now have:
|
|
78
|
-
|
|
79
|
-
- Yesterday's plan + appended summaries (assigned vs. shipped).
|
|
80
|
-
- A 7-day rolling window of notes/todos/sessions (the *why* behind today).
|
|
81
|
-
- The list of available `@<role>` subagents (the *who* of today).
|
|
82
|
-
|
|
83
|
-
Produce markdown that:
|
|
84
|
-
|
|
85
|
-
1. **Opens with a 2-3 sentence preamble** restating the week's arc — what's
|
|
86
|
-
in progress, what shipped yesterday, what's next.
|
|
87
|
-
2. **`## Workflow today`** — a short bulleted list of cross-cutting work the
|
|
88
|
-
*main agent* will run directly (not delegated). Include `/refresh-skills`
|
|
89
|
-
if subagents are stale; surface explicit user todos; surface blockers.
|
|
90
|
-
3. **One `## <role>` section per registered subagent**, each with:
|
|
91
|
-
- **1 must-do** — finishable today, traceable to a card or yesterday's
|
|
92
|
-
summary. Reference the source card id inline (e.g. `(see card-xyz)`).
|
|
93
|
-
- **0–2 stretch goals** — only if there's spare bandwidth.
|
|
94
|
-
- **Blockers** — call out anything the role can't proceed without.
|
|
95
|
-
4. **`## Summary`** — leave empty (`_Subagent results land here after
|
|
96
|
-
`/deepvista run` finishes._`). The `/deepvista run` flow fills it later.
|
|
97
|
-
|
|
98
|
-
Hard constraints:
|
|
99
|
-
|
|
100
|
-
- Total length ≤ 600 words. Brevity beats completeness for a daily plan.
|
|
101
|
-
- Every task must trace to a real card, note, or yesterday's summary —
|
|
102
|
-
never invent work. If a role has nothing genuinely ready, write
|
|
103
|
-
`- _No queued work today — the {role} specialist is free for ad-hoc
|
|
104
|
-
requests._` and move on.
|
|
105
|
-
- Use the section headers (`## Workflow today`, `## <role>`, `## Summary`)
|
|
106
|
-
exactly — the `/deepvista run` slash command parses them by string match.
|
|
107
|
-
|
|
108
|
-
## Step 5 — Save the plan as a DeepVista note
|
|
109
|
-
|
|
110
|
-
Pipe the markdown straight into `deepvista notes create` and tag it so
|
|
111
|
-
tomorrow's run finds it:
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
cat <<'PLAN' | deepvista notes create \
|
|
115
|
-
--title "Daily Planning $TODAY" \
|
|
116
|
-
--content-file - \
|
|
117
|
-
--tags "[\"daily-planning\",\"date:$TODAY\",\"source:agent\"]"
|
|
118
|
-
# Daily Planning $TODAY
|
|
119
|
-
|
|
120
|
-
<preamble>
|
|
121
|
-
|
|
122
|
-
## Workflow today
|
|
123
|
-
- …
|
|
124
|
-
|
|
125
|
-
## marketing
|
|
126
|
-
- …
|
|
127
|
-
|
|
128
|
-
## engineering
|
|
129
|
-
- …
|
|
130
|
-
|
|
131
|
-
## Summary
|
|
132
|
-
|
|
133
|
-
_Subagent results land here after `/deepvista run` finishes._
|
|
134
|
-
PLAN
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
Confirm with the user before running the save (this is a write command).
|
|
138
|
-
Surface the note URL — `https://app.deepvista.ai/notes/<id>` — in the
|
|
139
|
-
response so they can edit any section before `/deepvista run` dispatches it.
|
|
140
|
-
|
|
141
|
-
## Append a summary after `/deepvista run` finishes
|
|
142
|
-
|
|
143
|
-
The slash command appends each subagent's reply onto today's note. There is
|
|
144
|
-
no dedicated `append-summary` CLI — use `deepvista notes update`:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
deepvista notes get <note-id> # read current description
|
|
148
|
-
# build new_description = current + "\n\n## Summary — <timestamp>\n<consolidated block>\n"
|
|
149
|
-
deepvista notes update <note-id> --content-file - # pipe new_description on stdin
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Quick reference
|
|
153
|
-
|
|
154
|
-
| Command | Reads | Writes |
|
|
155
|
-
|---|---|---|
|
|
156
|
-
| `card +search "Daily Planning <date>"` | semantic search across cards | — |
|
|
157
|
-
| `notes get <id>` | one note's full body | — |
|
|
158
|
-
| `notes list --limit 20` | recent notes | — |
|
|
159
|
-
| `card list --type todo` | recent todos | — |
|
|
160
|
-
| `notes create --title ... --content-file - --tags ...` | stdin markdown | new note |
|
|
161
|
-
| `notes update <id> --content-file -` | stdin markdown | replaces the note body |
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/deepvista_cli/resources/workflow_host_runtime.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-session-end.sh
RENAMED
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-session-start.sh
RENAMED
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-session-turn.sh
RENAMED
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/plugins/claude-code/scripts/deepvista-skill-url.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-analyze-notes.md
RENAMED
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-create-from-note.md
RENAMED
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-import-files.md
RENAMED
|
File without changes
|
{deepvista_cli-0.2.0 → deepvista_cli-0.3.0}/skills/deepvista/reference/skill-research-to-skill.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|