stagent 0.10.0 → 0.11.1
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/README.md +44 -31
- package/dist/cli.js +24 -0
- package/docs/.coverage-gaps.json +154 -24
- package/docs/.last-generated +1 -1
- package/docs/features/agent-intelligence.md +12 -2
- package/docs/features/chat.md +40 -5
- package/docs/features/cost-usage.md +1 -1
- package/docs/features/documents.md +5 -2
- package/docs/features/inbox-notifications.md +10 -2
- package/docs/features/keyboard-navigation.md +12 -3
- package/docs/features/provider-runtimes.md +16 -2
- package/docs/features/settings.md +2 -2
- package/docs/features/shared-components.md +7 -3
- package/docs/features/tables.md +3 -1
- package/docs/features/tool-permissions.md +6 -2
- package/docs/features/workflows.md +6 -2
- package/docs/getting-started.md +1 -1
- package/docs/index.md +1 -1
- package/docs/journeys/developer.md +25 -2
- package/docs/journeys/personal-use.md +12 -5
- package/docs/journeys/power-user.md +45 -14
- package/docs/journeys/work-use.md +17 -8
- package/docs/manifest.json +15 -15
- package/docs/superpowers/plans/2026-04-07-instance-bootstrap.md +2 -2
- package/docs/superpowers/plans/2026-04-14-chat-command-namespace-refactor.md +1390 -0
- package/docs/superpowers/plans/2026-04-14-chat-environment-integration.md +1561 -0
- package/docs/superpowers/plans/2026-04-14-chat-polish-bundle-v1.md +1219 -0
- package/docs/superpowers/plans/2026-04-14-chat-session-persistence-provider-closeout.md +399 -0
- package/next.config.mjs +1 -0
- package/package.json +3 -3
- package/src/app/api/chat/conversations/[id]/skills/__tests__/activate.test.ts +141 -0
- package/src/app/api/chat/conversations/[id]/skills/activate/route.ts +74 -0
- package/src/app/api/chat/conversations/[id]/skills/deactivate/route.ts +33 -0
- package/src/app/api/chat/export/route.ts +52 -0
- package/src/app/api/chat/files/search/route.ts +50 -0
- package/src/app/api/environment/rescan-if-stale/__tests__/route.test.ts +45 -0
- package/src/app/api/environment/rescan-if-stale/route.ts +23 -0
- package/src/app/api/environment/skills/route.ts +13 -0
- package/src/app/api/schedules/[id]/execute/route.ts +2 -2
- package/src/app/api/settings/chat/pins/route.ts +94 -0
- package/src/app/api/settings/chat/saved-searches/__tests__/route.test.ts +119 -0
- package/src/app/api/settings/chat/saved-searches/route.ts +79 -0
- package/src/app/api/settings/environment/route.ts +26 -0
- package/src/app/api/tasks/[id]/execute/route.ts +52 -12
- package/src/app/api/tasks/[id]/respond/route.ts +31 -15
- package/src/app/api/tasks/[id]/resume/route.ts +24 -3
- package/src/app/documents/page.tsx +4 -1
- package/src/app/settings/page.tsx +2 -0
- package/src/components/book/content-blocks.tsx +1 -1
- package/src/components/chat/__tests__/capability-banner.test.tsx +38 -0
- package/src/components/chat/__tests__/chat-session-provider.test.tsx +166 -1
- package/src/components/chat/__tests__/skill-row.test.tsx +91 -0
- package/src/components/chat/capability-banner.tsx +68 -0
- package/src/components/chat/chat-command-popover.tsx +668 -47
- package/src/components/chat/chat-input.tsx +103 -8
- package/src/components/chat/chat-message.tsx +12 -3
- package/src/components/chat/chat-session-provider.tsx +73 -3
- package/src/components/chat/chat-shell.tsx +62 -3
- package/src/components/chat/command-tab-bar.tsx +68 -0
- package/src/components/chat/conversation-template-picker.tsx +421 -0
- package/src/components/chat/help-dialog.tsx +39 -0
- package/src/components/chat/skill-composition-conflict-dialog.tsx +96 -0
- package/src/components/chat/skill-row.tsx +147 -0
- package/src/components/documents/document-browser.tsx +37 -19
- package/src/components/notifications/__tests__/permission-response-actions.test.tsx +70 -0
- package/src/components/notifications/permission-response-actions.tsx +155 -1
- package/src/components/playbook/playbook-detail-view.tsx +1 -1
- package/src/components/settings/environment-section.tsx +102 -0
- package/src/components/shared/__tests__/filter-hint.test.tsx +40 -0
- package/src/components/shared/__tests__/saved-searches-manager.test.tsx +147 -0
- package/src/components/shared/command-palette.tsx +262 -2
- package/src/components/shared/filter-hint.tsx +70 -0
- package/src/components/shared/filter-input.tsx +59 -0
- package/src/components/shared/saved-searches-manager.tsx +199 -0
- package/src/components/tasks/task-bento-grid.tsx +12 -2
- package/src/components/tasks/task-card.tsx +3 -0
- package/src/components/tasks/task-chip-bar.tsx +30 -1
- package/src/hooks/__tests__/use-chat-autocomplete-tabs.test.ts +47 -0
- package/src/hooks/__tests__/use-saved-searches.test.ts +70 -0
- package/src/hooks/use-active-skills.ts +110 -0
- package/src/hooks/use-chat-autocomplete.ts +120 -7
- package/src/hooks/use-enriched-skills.ts +19 -0
- package/src/hooks/use-pinned-entries.ts +104 -0
- package/src/hooks/use-recent-user-messages.ts +19 -0
- package/src/hooks/use-saved-searches.ts +142 -0
- package/src/lib/agents/__tests__/claude-agent-sdk-options.test.ts +56 -0
- package/src/lib/agents/__tests__/claude-agent.test.ts +17 -4
- package/src/lib/agents/__tests__/task-dispatch.test.ts +166 -0
- package/src/lib/agents/__tests__/tool-permissions.test.ts +60 -0
- package/src/lib/agents/claude-agent.ts +105 -46
- package/src/lib/agents/handoff/bus.ts +2 -2
- package/src/lib/agents/profiles/__tests__/list-fused-profiles.test.ts +110 -0
- package/src/lib/agents/profiles/__tests__/registry.test.ts +47 -0
- package/src/lib/agents/profiles/builtins/upgrade-assistant/SKILL.md +30 -3
- package/src/lib/agents/profiles/builtins/upgrade-assistant/profile.yaml +6 -2
- package/src/lib/agents/profiles/list-fused-profiles.ts +104 -0
- package/src/lib/agents/profiles/registry.ts +97 -22
- package/src/lib/agents/profiles/types.ts +7 -1
- package/src/lib/agents/router.ts +3 -6
- package/src/lib/agents/runtime/__tests__/catalog.test.ts +130 -0
- package/src/lib/agents/runtime/__tests__/execution-target.test.ts +183 -0
- package/src/lib/agents/runtime/anthropic-direct.ts +8 -0
- package/src/lib/agents/runtime/catalog.ts +121 -0
- package/src/lib/agents/runtime/claude-sdk.ts +32 -0
- package/src/lib/agents/runtime/execution-target.ts +456 -0
- package/src/lib/agents/runtime/index.ts +4 -0
- package/src/lib/agents/runtime/launch-failure.ts +101 -0
- package/src/lib/agents/runtime/openai-codex.ts +35 -0
- package/src/lib/agents/runtime/openai-direct.ts +8 -0
- package/src/lib/agents/task-dispatch.ts +220 -0
- package/src/lib/agents/tool-permissions.ts +16 -1
- package/src/lib/chat/__tests__/active-skill-injection.test.ts +261 -0
- package/src/lib/chat/__tests__/clean-filter-input.test.ts +68 -0
- package/src/lib/chat/__tests__/command-tabs.test.ts +68 -0
- package/src/lib/chat/__tests__/context-builder-files.test.ts +112 -0
- package/src/lib/chat/__tests__/dismissals.test.ts +65 -0
- package/src/lib/chat/__tests__/engine-sdk-options.test.ts +117 -0
- package/src/lib/chat/__tests__/skill-conflict.test.ts +35 -0
- package/src/lib/chat/__tests__/types.test.ts +28 -0
- package/src/lib/chat/active-skills.ts +31 -0
- package/src/lib/chat/clean-filter-input.ts +30 -0
- package/src/lib/chat/codex-engine.ts +30 -7
- package/src/lib/chat/command-tabs.ts +61 -0
- package/src/lib/chat/context-builder.ts +141 -1
- package/src/lib/chat/dismissals.ts +73 -0
- package/src/lib/chat/engine.ts +109 -15
- package/src/lib/chat/files/__tests__/search.test.ts +135 -0
- package/src/lib/chat/files/expand-mention.ts +76 -0
- package/src/lib/chat/files/search.ts +99 -0
- package/src/lib/chat/skill-composition.ts +210 -0
- package/src/lib/chat/skill-conflict.ts +105 -0
- package/src/lib/chat/stagent-tools.ts +6 -19
- package/src/lib/chat/stream-telemetry.ts +9 -4
- package/src/lib/chat/system-prompt.ts +22 -0
- package/src/lib/chat/tool-catalog.ts +33 -3
- package/src/lib/chat/tools/__tests__/profile-tools.test.ts +51 -0
- package/src/lib/chat/tools/__tests__/settings-tools.test.ts +294 -0
- package/src/lib/chat/tools/__tests__/skill-tools.test.ts +474 -0
- package/src/lib/chat/tools/__tests__/task-tools.test.ts +47 -0
- package/src/lib/chat/tools/__tests__/workflow-tools-dedup.test.ts +134 -0
- package/src/lib/chat/tools/blueprint-tools.ts +190 -0
- package/src/lib/chat/tools/helpers.ts +2 -0
- package/src/lib/chat/tools/profile-tools.ts +120 -23
- package/src/lib/chat/tools/skill-tools.ts +183 -0
- package/src/lib/chat/tools/task-tools.ts +6 -2
- package/src/lib/chat/tools/workflow-tools.ts +61 -20
- package/src/lib/chat/types.ts +15 -0
- package/src/lib/constants/settings.ts +2 -0
- package/src/lib/data/clear.ts +2 -6
- package/src/lib/db/bootstrap.ts +17 -0
- package/src/lib/db/schema.ts +26 -0
- package/src/lib/environment/__tests__/auto-promote.test.ts +132 -0
- package/src/lib/environment/__tests__/list-skills-enriched.test.ts +55 -0
- package/src/lib/environment/__tests__/skill-enrichment.test.ts +129 -0
- package/src/lib/environment/__tests__/skill-recommendations.test.ts +87 -0
- package/src/lib/environment/data.ts +9 -0
- package/src/lib/environment/list-skills.ts +176 -0
- package/src/lib/environment/parsers/__tests__/skill.test.ts +54 -0
- package/src/lib/environment/parsers/skill.ts +26 -5
- package/src/lib/environment/profile-generator.ts +56 -2
- package/src/lib/environment/skill-enrichment.ts +106 -0
- package/src/lib/environment/skill-recommendations.ts +66 -0
- package/src/lib/filters/__tests__/parse.quoted.test.ts +40 -0
- package/src/lib/filters/__tests__/parse.test.ts +135 -0
- package/src/lib/filters/parse.ts +86 -0
- package/src/lib/instance/__tests__/detect.test.ts +1 -1
- package/src/lib/instance/__tests__/upgrade-poller.test.ts +50 -0
- package/src/lib/instance/fingerprint.ts +8 -10
- package/src/lib/instance/upgrade-poller.ts +53 -1
- package/src/lib/schedules/scheduler.ts +4 -4
- package/src/lib/utils/stagent-paths.ts +4 -0
- package/src/lib/workflows/blueprints/__tests__/render-prompt.test.ts +124 -0
- package/src/lib/workflows/blueprints/render-prompt.ts +71 -0
- package/src/lib/workflows/blueprints/types.ts +6 -0
- package/src/lib/workflows/engine.ts +5 -3
- package/src/test/setup.ts +10 -0
|
@@ -4,9 +4,9 @@ category: "feature-reference"
|
|
|
4
4
|
section: "documents"
|
|
5
5
|
route: "/documents"
|
|
6
6
|
tags: [documents, upload, preprocessing, pdf, office, text-extraction, agent-context]
|
|
7
|
-
features: ["document-manager", "file-attachment-data-layer", "document-preprocessing", "agent-document-context", "document-output-generation"]
|
|
7
|
+
features: ["document-manager", "file-attachment-data-layer", "document-preprocessing", "agent-document-context", "document-output-generation", "chat-filter-namespace", "chat-pinned-saved-searches"]
|
|
8
8
|
screengrabCount: 2
|
|
9
|
-
lastUpdated: "2026-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Documents
|
|
@@ -26,6 +26,9 @@ The Document Library is where you upload, manage, and organize files that agents
|
|
|
26
26
|
### Table and Grid Views
|
|
27
27
|
Toggle between a table view for dense scanning (file name, type, size, processing status, timestamps) and a grid view with visual cards. Both views support selection for bulk operations.
|
|
28
28
|
|
|
29
|
+
### FilterInput and Saved Searches
|
|
30
|
+
The `/documents` list page is the reference consumer for the shared **FilterInput** component. Type `#type:pdf` or `#scope:"legal review"` to filter by namespace — double-quoted values cleanly handle phrases with spaces. Combine filters with a free-text search, then click **Save view** in the footer to pin the combination as a saved search. Saved searches are available across surfaces (Chat, Tables, Documents) via the `⌘K` palette **Saved** group.
|
|
31
|
+
|
|
29
32
|
### Upload Dialog with Drag-and-Drop
|
|
30
33
|
The upload dialog accepts files via drag-and-drop or file picker. A visual indicator shows supported file types. Multiple files can be uploaded in a single batch.
|
|
31
34
|
|
|
@@ -4,9 +4,9 @@ category: "feature-reference"
|
|
|
4
4
|
section: "inbox-notifications"
|
|
5
5
|
route: "/inbox"
|
|
6
6
|
tags: [inbox, notifications, permissions, approval, human-in-the-loop, toast, handoffs, agent-messages]
|
|
7
|
-
features: ["inbox-notifications", "ambient-approval-toast", "content-handling", "agent-async-handoffs"]
|
|
7
|
+
features: ["inbox-notifications", "ambient-approval-toast", "content-handling", "agent-async-handoffs", "upgrade-detection", "upgrade-session"]
|
|
8
8
|
screengrabCount: 2
|
|
9
|
-
lastUpdated: "2026-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Inbox & Notifications
|
|
@@ -41,6 +41,14 @@ When an agent requests permission to use a tool, a "Permission Required" notific
|
|
|
41
41
|
### Agent Handoff Approvals
|
|
42
42
|
When one agent hands off work to another via the async message bus, a handoff notification appears in the inbox. You can approve the handoff to let the receiving agent proceed, or deny it to stop the chain. Governance gates enforce chain depth limits and prevent self-handoffs.
|
|
43
43
|
|
|
44
|
+
### Agent Questions (AskUserQuestion)
|
|
45
|
+
|
|
46
|
+
When an agent needs a direct answer from you — for example, to disambiguate between two valid paths during an upgrade merge — it uses the **AskUserQuestion** tool. These surface in the inbox as question notifications with a typed reply box (rendered by the `QuestionReplyActions` branch of the permission-response view). Submit a short answer inline and the agent resumes from where it paused. Questions are distinct from permission requests: there is no "Approve / Deny," only the reply field.
|
|
47
|
+
|
|
48
|
+
### Upgrade Failure Notifications
|
|
49
|
+
|
|
50
|
+
If the hourly upgrade-detection poller fails three consecutive times (network error, unreachable remote, etc.), a persistent notification is posted to the inbox so the issue does not go silent. The three-strike dedup prevents a flood — only the first sustained failure raises a notification, and it clears automatically once the poller succeeds again.
|
|
51
|
+
|
|
44
52
|
### Ambient Approval Toasts
|
|
45
53
|
For quick permission grants, ambient toasts appear at the edge of the screen. You can approve or deny without navigating to the inbox, keeping your workflow uninterrupted.
|
|
46
54
|
|
|
@@ -3,10 +3,10 @@ title: "Keyboard Navigation"
|
|
|
3
3
|
category: "feature-reference"
|
|
4
4
|
section: "keyboard-navigation"
|
|
5
5
|
route: "cross-cutting"
|
|
6
|
-
tags: [keyboard, command-palette, accessibility, aria, a11y, navigation]
|
|
7
|
-
features: ["command-palette-enhancement", "accessibility", "keyboard-shortcut-system"]
|
|
6
|
+
tags: [keyboard, command-palette, accessibility, aria, a11y, navigation, templates, saved-searches, slash-commands]
|
|
7
|
+
features: ["command-palette-enhancement", "accessibility", "keyboard-shortcut-system", "chat-conversation-templates", "chat-pinned-saved-searches", "saved-search-polish-v1"]
|
|
8
8
|
screengrabCount: 2
|
|
9
|
-
lastUpdated: "2026-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Keyboard Navigation
|
|
@@ -31,6 +31,15 @@ Activated with **Meta+K** (Cmd+K on macOS, Ctrl+K on other platforms), the comma
|
|
|
31
31
|
- **Cross-entity search** -- type to search across projects, tasks, workflows, documents, and schedules in a single unified list.
|
|
32
32
|
- **Keyboard navigation** -- arrow keys to browse results, Enter to select, Escape to dismiss.
|
|
33
33
|
- **Action shortcuts** -- create new tasks, projects, or workflows directly from the palette.
|
|
34
|
+
- **Templates group** -- browse conversation templates generated from workflow blueprints; pick one to open a pre-primed chat.
|
|
35
|
+
- **Saved group** -- recall pinned search + filter combinations across Chat, Documents, and Tables. Saved searches round-trip through a settings endpoint and refetch automatically when new ones are added.
|
|
36
|
+
|
|
37
|
+
### Slash Commands
|
|
38
|
+
|
|
39
|
+
In addition to the palette, the Chat composer recognizes slash commands for fast actions:
|
|
40
|
+
|
|
41
|
+
- `/new-from-template` -- open the conversation template picker inline without leaving the composer.
|
|
42
|
+
- Additional slash commands live alongside the `/` popover tabs (Actions, Skills, Tools, Entities).
|
|
34
43
|
|
|
35
44
|
### Focus-Visible Rings
|
|
36
45
|
|
|
@@ -4,9 +4,9 @@ category: "feature-reference"
|
|
|
4
4
|
section: "provider-runtimes"
|
|
5
5
|
route: "cross-cutting"
|
|
6
6
|
tags: [claude, codex, runtime, oauth, websocket, mcp, providers, ollama, anthropic-direct, openai-direct, smart-router]
|
|
7
|
-
features: ["provider-runtime-abstraction", "openai-codex-app-server", "cross-provider-profile-compatibility", "ollama-runtime-provider", "anthropic-direct-runtime", "openai-direct-runtime", "smart-runtime-router"]
|
|
7
|
+
features: ["provider-runtime-abstraction", "openai-codex-app-server", "cross-provider-profile-compatibility", "ollama-runtime-provider", "anthropic-direct-runtime", "openai-direct-runtime", "smart-runtime-router", "runtime-validation-hardening", "runtime-capability-matrix"]
|
|
8
8
|
screengrabCount: 2
|
|
9
|
-
lastUpdated: "2026-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Provider Runtimes
|
|
@@ -86,6 +86,20 @@ The smart router automatically selects the best runtime for each task based on m
|
|
|
86
86
|
|
|
87
87
|
The default selection is "Auto (recommended)" which lets the router decide. You can always override with a specific runtime in task, schedule, or workflow forms.
|
|
88
88
|
|
|
89
|
+
### Runtime Capability Matrix
|
|
90
|
+
|
|
91
|
+
Each runtime advertises its capabilities through a central matrix used by the rest of the app to decide whether to show a feature, gate it, or substitute a fallback. The most visible flags today:
|
|
92
|
+
|
|
93
|
+
- **`supportsSkillComposition`** — whether the runtime accepts multiple concurrent skills on a single conversation. Gates the Chat Skills tab multi-activation behavior.
|
|
94
|
+
- **`maxActiveSkills`** — hard cap on the active skill stack. The Chat composer shows "N of M active" against this value.
|
|
95
|
+
- **`hasNativeSkills`** / **`stagentInjectsSkills`** / **`autoLoadsInstructions`** — decide whether Stagent should inject SKILL.md or trust the runtime's native loader, preventing duplicated context on Codex and Claude.
|
|
96
|
+
|
|
97
|
+
Reading this matrix before wiring a feature is the canonical way to answer "should Stagent do X, or trust the runtime to do X."
|
|
98
|
+
|
|
99
|
+
### Runtime Validation Hardening
|
|
100
|
+
|
|
101
|
+
The MCP task-tools surface now validates every incoming `runtimeId` before dispatching work — unknown IDs are rejected at the boundary rather than crashing downstream. This protects the runtime registry from malformed chat-tool calls and surfaces bad configurations with a clean error message instead of a stack trace.
|
|
102
|
+
|
|
89
103
|
### Cross-Provider Profile Compatibility
|
|
90
104
|
|
|
91
105
|
Agent profiles are defined independently of the provider runtime. A profile specifies behavioral traits -- system prompt, tool preferences, stop conditions -- that translate cleanly to any of the five runtimes. Switching the runtime dropdown on a task preserves the selected profile and its configuration.
|
|
@@ -6,7 +6,7 @@ route: "/settings"
|
|
|
6
6
|
tags: ["settings", "configuration", "auth", "runtime", "browser-tools", "permissions", "budget", "ollama", "channels", "instance", "upgrade"]
|
|
7
7
|
features: ["session-management", "tool-permission-persistence", "tool-permission-presets", "browser-use", "spend-budget-guardrails", "settings-interactive-controls", "ollama-runtime-provider", "multi-channel-delivery", "bidirectional-channel-chat", "database-snapshot-backup", "instance-bootstrap", "upgrade-detection", "upgrade-session", "instance-license-metering"]
|
|
8
8
|
screengrabCount: 11
|
|
9
|
-
lastUpdated: "2026-04-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Settings
|
|
@@ -187,7 +187,7 @@ When `STAGENT_DEV_MODE=true` is set in `.env.local` or the `.git/stagent-dev-mod
|
|
|
187
187
|
An hourly scheduled poll runs `git fetch` against the upstream remote and compares `HEAD` to `origin/main`. When upstream is ahead, the sidebar shows a small **Upgrade available** badge next to Settings and the Instance card surfaces a "New version available" card with the number of commits behind. Detection is `git`-based rather than GitHub REST to avoid rate limits. Three consecutive poll failures escalate to a persistent notification.
|
|
188
188
|
|
|
189
189
|
### Upgrade Session
|
|
190
|
-
Clicking **Start upgrade** opens the upgrade session as a right-side sheet — not a full-page navigation, so you can glance back at your workspace while the upgrade runs. The session is backed by a task row with the `upgrade-assistant` profile, so it reuses all the existing execution infrastructure: fire-and-forget launch, canUseTool approval caching, SSE log streaming, and conflict resolution via the pending-approval host. If merge conflicts occur, a 3-card cluster (Keep mine / Take theirs / Show diff) appears inline and you resolve them without leaving the sheet.
|
|
190
|
+
Clicking **Start upgrade** opens the upgrade session as a right-side sheet — not a full-page navigation, so you can glance back at your workspace while the upgrade runs. The session is backed by a task row with the `upgrade-assistant` profile, so it reuses all the existing execution infrastructure: fire-and-forget launch, canUseTool approval caching, SSE log streaming, and conflict resolution via the pending-approval host. If merge conflicts occur, a 3-card cluster (Keep mine / Take theirs / Show diff) appears inline and you resolve them without leaving the sheet. When the assistant needs a direct answer (e.g., to disambiguate a conflict), it now calls **AskUserQuestion**, which renders a typed reply field via the inbox's `QuestionReplyActions` branch — you answer in-place and the assistant resumes. The `upgrade-assistant` profile explicitly allowlists AskUserQuestion so it is not gated behind a generic permission prompt.
|
|
191
191
|
|
|
192
192
|
### Footer Upgrade Button
|
|
193
193
|
A subtle **Upgrade** button appears in the sidebar footer once an upgrade is available — the same surface that shows trust tier and the command palette shortcut. Clicking it opens the same upgrade session sheet from any page without navigating to Settings first.
|
|
@@ -3,10 +3,10 @@ title: "Shared Components"
|
|
|
3
3
|
category: "feature-reference"
|
|
4
4
|
section: "shared-components"
|
|
5
5
|
route: "cross-cutting"
|
|
6
|
-
tags: [components, page-shell, detail-pane, status-chip, filter-bar, data-table, reusable]
|
|
7
|
-
features: ["shared-component-library", "page-shell", "detail-pane", "status-chip", "filter-bar", "view-switcher"]
|
|
6
|
+
tags: [components, page-shell, detail-pane, status-chip, filter-bar, filter-input, data-table, reusable]
|
|
7
|
+
features: ["shared-component-library", "page-shell", "detail-pane", "status-chip", "filter-bar", "view-switcher", "chat-filter-namespace"]
|
|
8
8
|
screengrabCount: 0
|
|
9
|
-
lastUpdated: "2026-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Shared Components
|
|
@@ -31,6 +31,10 @@ Five status chip families that map to entity lifecycle states. Each chip renders
|
|
|
31
31
|
|
|
32
32
|
Horizontal filter strip placed below page headers. Supports multiple filter types (select, search, date range) and displays an active filter count badge. Filters persist in URL search params for shareable filtered views.
|
|
33
33
|
|
|
34
|
+
### FilterInput
|
|
35
|
+
|
|
36
|
+
Typed input used for namespace-aware filtering (`#scope:`, `#type:`, and similar qualifiers). Supports double-quoted values so phrases with spaces parse correctly — e.g. `#scope:"customer support"`. Used by Chat search, the `@` / `/` popovers, the `/documents` list page, and the `⌘K` palette, giving every surface the same filter syntax. Paired with the `cleanFilterInput()` helper, which strips mention-trigger residue (`@`, `#`, `/`) when a pinned saved search is reapplied.
|
|
37
|
+
|
|
34
38
|
### ViewSwitcher
|
|
35
39
|
|
|
36
40
|
Toggle between saved view modes on a per-surface basis. Common modes include table view and grid/card view. The active view preference persists in local storage.
|
package/docs/features/tables.md
CHANGED
|
@@ -6,7 +6,7 @@ route: "/tables"
|
|
|
6
6
|
tags: [tables, structured-data, spreadsheet, charts, triggers, templates, import, export, formulas]
|
|
7
7
|
features: ["tables-data-layer", "tables-list-page", "tables-spreadsheet-editor", "tables-document-import", "tables-template-gallery", "tables-agent-integration", "tables-chat-queries", "tables-computed-columns", "tables-cross-joins", "tables-agent-charts", "tables-workflow-triggers", "tables-nl-creation", "tables-export", "tables-versioning", "bulk-row-enrichment"]
|
|
8
8
|
screengrabCount: 8
|
|
9
|
-
lastUpdated: "2026-04-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Tables
|
|
@@ -38,6 +38,8 @@ Tables is Stagent's structured data system -- a built-in spreadsheet-meets-datab
|
|
|
38
38
|
### Table and Grid Views
|
|
39
39
|
Browse all your tables from the `/tables` list page. Toggle between a compact table view and a visual grid view. Use the filter bar to narrow by category or search by name. Click any table to open it.
|
|
40
40
|
|
|
41
|
+
The filter bar uses the shared **FilterInput** component and the `#namespace:value` syntax (double-quote values that contain spaces, e.g. `#type:"customer list"`). Saved filter + query combinations can be pinned as **saved searches** and recalled from the `⌘K` palette under the **Saved** group — useful for recurring table views like "open orders" or "stale leads." See the [Documents](./documents.md) page for a cross-surface reference implementation.
|
|
42
|
+
|
|
41
43
|
### Create Tables
|
|
42
44
|
Open the create dialog to define a new table with a name, description, and columns. The inline column builder lets you set each column's name, type, and whether it is required -- all before the table is saved. Supported column types include text, number, date, boolean, select (dropdown), URL, email, and computed.
|
|
43
45
|
|
|
@@ -4,9 +4,9 @@ category: "feature-reference"
|
|
|
4
4
|
section: "tool-permissions"
|
|
5
5
|
route: "cross-cutting"
|
|
6
6
|
tags: [permissions, trust, safety, approval, human-in-the-loop, presets]
|
|
7
|
-
features: ["tool-permission-persistence", "tool-permission-presets", "ambient-approval-toast"]
|
|
7
|
+
features: ["tool-permission-persistence", "tool-permission-presets", "ambient-approval-toast", "upgrade-session"]
|
|
8
8
|
screengrabCount: 1
|
|
9
|
-
lastUpdated: "2026-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Tool Permissions
|
|
@@ -46,6 +46,10 @@ Before executing a task, the runtime performs a permission pre-check against the
|
|
|
46
46
|
|
|
47
47
|
When a tool request exceeds the current trust tier and has not been persisted, a notification is created in the inbox. You can approve or deny from the Inbox or from the task detail view, keeping the agent paused until a decision is made.
|
|
48
48
|
|
|
49
|
+
### AskUserQuestion Tool
|
|
50
|
+
|
|
51
|
+
A special tool — `AskUserQuestion` — lets agents ask you for direct input rather than request permission. Instead of an Approve / Deny pair, the inbox notification renders a typed reply box (the `QuestionReplyActions` branch of the permission response view). This is the primitive behind the upgrade assistant's conflict resolution flow: when the merge hits an ambiguous decision, the upgrade profile asks a targeted question and waits for your reply before proceeding. `AskUserQuestion` is never auto-approved and is explicitly allowlisted on the `upgrade-assistant` profile.
|
|
52
|
+
|
|
49
53
|
### Ambient Approval Toast
|
|
50
54
|
|
|
51
55
|
For quick permission grants without navigating away from the current context, ambient toast notifications appear when an agent requests a tool. You can approve directly from the toast, maintaining workflow continuity.
|
|
@@ -4,9 +4,9 @@ category: "feature-reference"
|
|
|
4
4
|
section: "workflows"
|
|
5
5
|
route: "/workflows"
|
|
6
6
|
tags: [workflows, patterns, sequence, parallel, swarm, autonomous, templates, multi-step, blueprints, delays, drip]
|
|
7
|
-
features: ["workflow-engine", "workflow-blueprints", "ai-assist-workflow-creation", "workflow-context-batching", "business-function-profiles", "workflow-step-delays"]
|
|
7
|
+
features: ["workflow-engine", "workflow-blueprints", "ai-assist-workflow-creation", "workflow-context-batching", "business-function-profiles", "workflow-step-delays", "chat-conversation-templates", "workflow-run-history"]
|
|
8
8
|
screengrabCount: 4
|
|
9
|
-
lastUpdated: "2026-04-
|
|
9
|
+
lastUpdated: "2026-04-15"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Workflows
|
|
@@ -48,6 +48,10 @@ The blueprint gallery offers pre-built workflow templates for common patterns:
|
|
|
48
48
|
|
|
49
49
|
Click any blueprint to preview its steps, then create a workflow pre-populated with the template configuration. Customize steps, profiles, and runtimes to match your specific process.
|
|
50
50
|
|
|
51
|
+
### Blueprints as Chat Templates
|
|
52
|
+
|
|
53
|
+
Blueprints also double as **conversation templates** for the Chat surface. A blueprint can declare an optional `chatPrompt` field that provides a purpose-built opening prompt for chat use; if it is not set, the chat launcher falls back to `steps[0].promptTemplate`. This means the same blueprint asset powers three entry points — the Workflows gallery, the Chat empty-state picker, and the `/new-from-template` slash command — without requiring parallel definitions. See the [Chat](./chat.md) feature doc for the conversation-side flow.
|
|
54
|
+
|
|
51
55
|
### Tabs: All, Templates, Runs
|
|
52
56
|
The workflow page organizes content into three tabs. "All" shows every workflow. "Templates" shows reusable patterns you can instantiate. "Runs" shows active and historical executions with their current status.
|
|
53
57
|
|
package/docs/getting-started.md
CHANGED
|
@@ -28,7 +28,7 @@ This downloads and launches Stagent on [localhost:3000](http://localhost:3000).
|
|
|
28
28
|
For contributors or developers who want full control:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
git clone https://github.com/
|
|
31
|
+
git clone https://github.com/manavsehgal/stagent.git
|
|
32
32
|
cd stagent && npm install
|
|
33
33
|
npm run dev
|
|
34
34
|
```
|
package/docs/index.md
CHANGED
|
@@ -6,7 +6,7 @@ difficulty: "advanced"
|
|
|
6
6
|
estimatedTime: "30 minutes"
|
|
7
7
|
sections: ["settings", "environment", "chat", "monitoring", "profiles", "workflows", "tables", "schedules", "delivery-channels"]
|
|
8
8
|
tags: ["advanced", "developer", "settings", "environment", "cli", "api", "monitoring", "profiles", "ollama", "channels", "handoffs", "memory", "tables"]
|
|
9
|
-
lastUpdated: "2026-04-
|
|
9
|
+
lastUpdated: "2026-04-16"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Developer Guide
|
|
@@ -55,7 +55,7 @@ Riley sets up Ollama as the fifth runtime adapter for private, zero-cost executi
|
|
|
55
55
|
|
|
56
56
|
Riley sets up Slack and Telegram as delivery channels for schedule notifications and bidirectional chat.
|
|
57
57
|
|
|
58
|
-

|
|
59
59
|
|
|
60
60
|
1. Scroll to **Delivery Channels** in Settings
|
|
61
61
|
2. Click **+ Add Channel** and select **Slack**
|
|
@@ -218,6 +218,29 @@ Riley builds the CLI for scripted operations and CI/CD integration.
|
|
|
218
218
|
3. Test CRUD operations: `node dist/cli.js projects list`, `node dist/cli.js tasks create --title "CLI test"`
|
|
219
219
|
4. Verify CLI-created entities appear in the web UI (shared SQLite database)
|
|
220
220
|
|
|
221
|
+
### Step 14a: Understand the Runtime Capability Matrix
|
|
222
|
+
|
|
223
|
+
Riley wants to know why some features show up on one runtime but not another. The answer lives in the runtime capability matrix.
|
|
224
|
+
|
|
225
|
+
1. Open `src/lib/agents/runtime/catalog.ts` — each runtime adapter declares flags like `supportsSkillComposition`, `maxActiveSkills`, `hasNativeSkills`, `stagentInjectsSkills`, and `autoLoadsInstructions`
|
|
226
|
+
2. The Chat Skills tab reads `supportsSkillComposition` to decide whether to enable multi-skill activation and "N of M active" reporting
|
|
227
|
+
3. The SKILL.md injector reads `stagentInjectsSkills` to avoid duplicating context on runtimes (like Codex App Server and Claude Agent SDK) that load instructions natively
|
|
228
|
+
4. When you wire a new feature that touches system prompts or skills, consult the matrix before deciding whether Stagent should inject something or trust the runtime to do so
|
|
229
|
+
|
|
230
|
+
> **Tip:** The MCP task-tools boundary also validates the runtime ID now (runtime-validation-hardening). Malformed `runtimeId` values are rejected at the boundary with a clean error, rather than crashing the dispatcher.
|
|
231
|
+
|
|
232
|
+
### Step 14b: Observe the Upgrade Detection Poller
|
|
233
|
+
|
|
234
|
+

|
|
235
|
+
|
|
236
|
+
1. Scroll to the **Instance** section in Settings to see the dev mode status and upgrade detection gate
|
|
237
|
+
2. The hourly scheduler runs `git fetch` against the upstream remote and compares `HEAD` to `origin/main`
|
|
238
|
+
3. When upstream is ahead, the sidebar shows an **Upgrade available** badge and the Instance card reports the commits-behind count
|
|
239
|
+
4. Three consecutive poll failures escalate to a persistent inbox notification (three-strike dedup prevents notification floods)
|
|
240
|
+
5. The upgrade session uses the `upgrade-assistant` profile, which allowlists **AskUserQuestion** — the assistant can ask direct questions mid-merge without hitting a generic permission prompt
|
|
241
|
+
|
|
242
|
+
> **Tip:** The Instance card also shows bootstrap status. In dev mode (indicated by `STAGENT_DEV_MODE=true` or the `.git/stagent-dev-mode` sentinel), auto-upgrade machinery is skipped to avoid interfering with contributor workflows.
|
|
243
|
+
|
|
221
244
|
### Step 15: Verify Platform Health
|
|
222
245
|
|
|
223
246
|
Riley performs a final platform health check.
|
|
@@ -6,7 +6,7 @@ difficulty: "beginner"
|
|
|
6
6
|
estimatedTime: "30 minutes"
|
|
7
7
|
sections: ["home-workspace", "dashboard-kanban", "projects", "chat", "tables", "schedules", "user-guide", "book"]
|
|
8
8
|
tags: ["beginner", "solo", "tasks", "kanban", "chat", "tables", "schedules", "delivery-channels", "book"]
|
|
9
|
-
lastUpdated: "2026-04-
|
|
9
|
+
lastUpdated: "2026-04-16"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Personal Use Guide
|
|
@@ -69,9 +69,13 @@ Before setting up a formal project, Alex tries the Chat feature to brainstorm id
|
|
|
69
69
|
2. Notice the **Tool Catalog** with a welcoming hero heading and suggested prompt categories (Explore, Create, Debug, Automate)
|
|
70
70
|
3. Browse the **Smart Picks** row for personalized suggestions
|
|
71
71
|
4. Type a question like "What pages should a developer portfolio website include?" and press Enter
|
|
72
|
-
5. Review the AI response
|
|
72
|
+
5. Review the AI response -- notice how Chat keeps a clean conversation thread, deduplicating similar messages so the history stays readable
|
|
73
|
+
6. Try typing **@** in the composer to open the mentions popover -- you can reference tasks, projects, documents, profiles, and workflows inline to give the AI richer context
|
|
74
|
+
7. Next time, try **Start from template** on the empty-state hero (or type `/new-from-template` in the composer) to open a conversation pre-primed with a blueprint like "Research a topic" or "Draft a plan"
|
|
73
75
|
|
|
74
|
-
|
|
76
|
+

|
|
77
|
+
|
|
78
|
+
> **Tip:** Chat is perfect for quick brainstorming sessions. You do not need to create a project first -- just ask a question. The conversation history stays in the sidebar so you can return to it later. Pin useful filter + search combinations as **saved searches** (available from the `⌘K` palette under the **Saved** group) so you can jump back to them later.
|
|
75
79
|
|
|
76
80
|
### Step 5: Create a New Project
|
|
77
81
|
|
|
@@ -122,7 +126,10 @@ Alex creates the first task for the portfolio project.
|
|
|
122
126
|
3. Write a **Description** with detail about requirements
|
|
123
127
|
4. Assign the task to the **Portfolio Website** project
|
|
124
128
|
5. Set **Priority** to High and leave **Status** as Planned
|
|
125
|
-
6.
|
|
129
|
+
6. Open the **/** popover in the composer to browse available tools (create_task, execute_task, read_file) and entities -- these are the same capabilities the AI uses when running tasks
|
|
130
|
+
7. Click **Create** to add the task to the board
|
|
131
|
+
|
|
132
|
+

|
|
126
133
|
|
|
127
134
|
> **Tip:** Write task descriptions as if you are briefing a colleague. The more specific you are, the better the AI agent results will be.
|
|
128
135
|
|
|
@@ -181,7 +188,7 @@ Alex wants Stagent to proactively check on the portfolio project every morning.
|
|
|
181
188
|
|
|
182
189
|
Alex wants to receive schedule results on the go. Setting up a Telegram delivery channel takes less than two minutes.
|
|
183
190
|
|
|
184
|
-

|
|
185
192
|
|
|
186
193
|
1. Open **Settings** from the sidebar under **Configure**
|
|
187
194
|
2. Scroll to the **Delivery Channels** section
|
|
@@ -6,7 +6,7 @@ difficulty: "advanced"
|
|
|
6
6
|
estimatedTime: "30 minutes"
|
|
7
7
|
sections: ["dashboard-kanban", "profiles", "chat", "workflows", "tables", "schedules", "monitoring", "settings"]
|
|
8
8
|
tags: ["advanced", "automation", "workflows", "profiles", "tables", "schedules", "monitoring", "bulk-operations", "ollama", "episodic-memory", "nlp-scheduling"]
|
|
9
|
-
lastUpdated: "2026-04-
|
|
9
|
+
lastUpdated: "2026-04-16"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Power User Guide
|
|
@@ -88,14 +88,16 @@ Sam wants to run privacy-sensitive tasks on local models with zero API cost.
|
|
|
88
88
|
|
|
89
89
|
Sam creates schedules by describing them in plain English instead of writing cron expressions.
|
|
90
90
|
|
|
91
|
-

|
|
92
92
|
|
|
93
93
|
1. Navigate to **Schedules** and click **Create Schedule**
|
|
94
94
|
2. In the interval field, type natural language: "every weekday at 10pm," "every 6 hours during business hours," or "twice daily at 9am and 5pm"
|
|
95
95
|
3. A **preview** appears showing exactly how the system parsed the input
|
|
96
96
|
4. Select **Heartbeat** type to add intelligence -- the agent evaluates a checklist before acting
|
|
97
97
|
5. Add checklist items specific to your automation needs
|
|
98
|
-
6. Save the schedule
|
|
98
|
+
6. Save the schedule and click on it to open the **detail sheet** -- review firing history, next run time, and pause/resume controls
|
|
99
|
+
|
|
100
|
+

|
|
99
101
|
|
|
100
102
|
> **Tip:** NLP scheduling removes the friction of cron syntax. If the preview does not match your intent, rephrase and it re-parses instantly.
|
|
101
103
|
|
|
@@ -103,10 +105,10 @@ Sam creates schedules by describing them in plain English instead of writing cro
|
|
|
103
105
|
|
|
104
106
|
Sam customizes a workflow for a "Deploy & Verify" pipeline with specialized profiles at each step.
|
|
105
107
|
|
|
106
|
-

|
|
107
109
|
|
|
108
110
|
1. From the Workflows page, click **Create Workflow** (or customize a blueprint)
|
|
109
|
-
2.
|
|
111
|
+
2. Add steps with different agent profiles at each stage -- notice the **delay step** option for inserting timed pauses between steps (e.g., a 2-hour cooldown between deploy and verification)
|
|
110
112
|
3. Use the business-function profiles for non-technical steps (e.g., Content Creator for documentation, Operations Coordinator for runbook updates)
|
|
111
113
|
4. Save the workflow
|
|
112
114
|
|
|
@@ -146,7 +148,27 @@ Sam connects a table to the workflow engine so that row changes automatically ki
|
|
|
146
148
|
|
|
147
149
|
> **Tip:** Table triggers turn spreadsheets into event-driven automation surfaces. Sam uses them to auto-run incident postmortems whenever an incident row status changes to "Resolved."
|
|
148
150
|
|
|
149
|
-
### Step 11:
|
|
151
|
+
### Step 11: Create Tasks with AI Assist
|
|
152
|
+
|
|
153
|
+
Sam uses AI Assist to turn a rough task idea into a fully specified, workflow-ready plan.
|
|
154
|
+
|
|
155
|
+

|
|
156
|
+
|
|
157
|
+
1. From the Dashboard, click **Create Task**
|
|
158
|
+
2. Enter a rough title and description -- for example, "API Security Audit" with a one-line description
|
|
159
|
+
3. Click **AI Assist** -- the system analyzes the task and returns an improved description, complexity rating, recommended execution pattern (e.g., Swarm), and a checkpoint flag
|
|
160
|
+
4. Review the **breakdown** -- for complex tasks, AI Assist generates a multi-step workflow with per-step descriptions
|
|
161
|
+
|
|
162
|
+

|
|
163
|
+
|
|
164
|
+
5. Click **Apply** to replace the original description with the AI-improved version, or **Convert to Workflow** to generate a full workflow from the breakdown
|
|
165
|
+
6. The resulting workflow lands on the confirmation page, ready for review and customization
|
|
166
|
+
|
|
167
|
+

|
|
168
|
+
|
|
169
|
+
> **Tip:** AI Assist is the bridge between "I have a vague idea" and "I have a production-ready plan." For complex tasks, it recommends the Swarm pattern where multiple agents tackle sub-steps in parallel -- this is how multi-agent swarm execution works in practice.
|
|
170
|
+
|
|
171
|
+
### Step 12: Batch-Manage Tasks on the Kanban
|
|
150
172
|
|
|
151
173
|
Sam cleans up the task board using bulk select mode.
|
|
152
174
|
|
|
@@ -160,7 +182,7 @@ Sam cleans up the task board using bulk select mode.
|
|
|
160
182
|
|
|
161
183
|
> **Tip:** After a weekend of autonomous heartbeat runs, Sam's first Monday task is always a bulk cleanup.
|
|
162
184
|
|
|
163
|
-
### Step
|
|
185
|
+
### Step 13: Schedule Automated Prompt Loops
|
|
164
186
|
|
|
165
187
|

|
|
166
188
|
|
|
@@ -170,7 +192,7 @@ Sam cleans up the task board using bulk select mode.
|
|
|
170
192
|
4. Verify stop conditions and delivery channels
|
|
171
193
|
5. Toggle **Pause/Resume** as needed
|
|
172
194
|
|
|
173
|
-
### Step
|
|
195
|
+
### Step 14: Leverage Episodic Memory
|
|
174
196
|
|
|
175
197
|
Sam notices agents are re-researching the same topics. Episodic memory lets agents retain factual knowledge across executions.
|
|
176
198
|
|
|
@@ -184,7 +206,7 @@ Sam notices agents are re-researching the same topics. Episodic memory lets agen
|
|
|
184
206
|
|
|
185
207
|
> **Tip:** Episodic memory means a Financial Analyst profile that researches a company once can recall that research in future tasks without re-doing the work. It builds institutional knowledge automatically.
|
|
186
208
|
|
|
187
|
-
### Step
|
|
209
|
+
### Step 15: Watch Agent Execution in Real-Time
|
|
188
210
|
|
|
189
211
|

|
|
190
212
|
|
|
@@ -196,16 +218,25 @@ Sam notices agents are re-researching the same topics. Episodic memory lets agen
|
|
|
196
218
|
|
|
197
219
|
> **Tip:** The Monitor is Sam's operational dashboard. When something goes wrong in an autonomous loop at 3am, the execution traces are the fastest path to diagnosis.
|
|
198
220
|
|
|
199
|
-
### Step
|
|
221
|
+
### Step 16: Use Chat Suggested Prompts and Skill Composition
|
|
200
222
|
|
|
201
|
-

|
|
202
224
|
|
|
203
225
|
1. Navigate to **Chat** and notice the **suggested prompt tabs** (Explore, Create, Debug, Automate)
|
|
204
226
|
2. Click the **Create** tab to see prompts for creating tasks, workflows, and schedules
|
|
205
227
|
3. Click a suggested prompt to populate the input
|
|
206
|
-
4.
|
|
228
|
+
4. Type **/** to open the slash popover -- browse four tabs: **Actions**, **Skills**, **Tools**, and **Entities**
|
|
229
|
+
|
|
230
|
+

|
|
231
|
+
|
|
232
|
+
5. Switch to the **Skills** tab — click **+ Add** to stack a second skill onto the conversation (e.g., a research skill plus a code-review skill running concurrently)
|
|
233
|
+
6. If the new skill clashes with an active one, review the **conflict dialog** and decide which to keep — the engine's heuristic surfaces overlapping tools or contradictory instructions
|
|
234
|
+
7. Watch the "N of M active" indicator; once you approach the runtime's `maxActiveSkills` cap, prompt-budget eviction automatically trims the oldest low-priority skill
|
|
235
|
+
8. For a faster start, try **Start from template** or `/new-from-template` to open a conversation pre-primed from a workflow blueprint — the blueprint's optional `chatPrompt` provides the opening context
|
|
236
|
+
|
|
237
|
+
> **Tip:** Skill composition only engages on runtimes where `supportsSkillComposition` is true. On other runtimes the Skills tab stays read-only with a hint, and the chat behaves as a single-skill session.
|
|
207
238
|
|
|
208
|
-
### Step
|
|
239
|
+
### Step 17: Chain Everything Together
|
|
209
240
|
|
|
210
241
|
Sam connects the dots: profiles define *how*, workflows define *what*, schedules define *when*, Ollama handles the *cheap stuff*, episodic memory provides the *knowledge*, and delivery channels deliver the *results*.
|
|
211
242
|
|
|
@@ -221,7 +252,7 @@ Sam connects the dots: profiles define *how*, workflows define *what*, schedules
|
|
|
221
252
|
|
|
222
253
|
> **Tip:** Sam's automation philosophy: start small, observe, then expand. Run a workflow manually three times before scheduling it. Trust builds incrementally -- and so should autonomy.
|
|
223
254
|
|
|
224
|
-
### Step
|
|
255
|
+
### Step 18: What's Next
|
|
225
256
|
|
|
226
257
|
Sam's workspace is a fully autonomous operations engine. The next step is going deeper into the platform layer.
|
|
227
258
|
|
|
@@ -6,7 +6,7 @@ difficulty: "intermediate"
|
|
|
6
6
|
estimatedTime: "30 minutes"
|
|
7
7
|
sections: ["projects", "chat", "documents", "tables", "workflows", "schedules", "cost-usage", "inbox-notifications", "delivery-channels"]
|
|
8
8
|
tags: ["intermediate", "team", "documents", "tables", "workflows", "schedules", "costs", "inbox", "channels", "handoffs"]
|
|
9
|
-
lastUpdated: "2026-04-
|
|
9
|
+
lastUpdated: "2026-04-16"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Work Use Guide
|
|
@@ -56,6 +56,9 @@ Rather than clicking through every page, Jordan asks Chat for a quick status upd
|
|
|
56
56
|
2. Type a question such as "What is the status of the Q2 planning project?"
|
|
57
57
|
3. Review the response -- notice **Quick Access pills** linking to specific items
|
|
58
58
|
4. Click a pill to jump directly to the referenced entity
|
|
59
|
+
5. Use **@** mentions to pull specific entities into the conversation -- type `@` to browse tasks, projects, documents, and workflows without leaving the composer
|
|
60
|
+
|
|
61
|
+

|
|
59
62
|
|
|
60
63
|
> **Tip:** Chat is the fastest way to get a cross-cutting status overview. Ask one question and follow the entity links.
|
|
61
64
|
|
|
@@ -107,6 +110,9 @@ Jordan has a CSV export from the previous quarter's performance review. Importin
|
|
|
107
110
|
3. Review the column mapping -- Stagent auto-detects column types from the data
|
|
108
111
|
4. Assign the table to the relevant project
|
|
109
112
|
5. Click **Create** to import the data into a fully editable spreadsheet view
|
|
113
|
+
6. Click into the table to open the **Data tab** with a spreadsheet-style editor -- edit cells inline, add rows, and review content
|
|
114
|
+
|
|
115
|
+

|
|
110
116
|
|
|
111
117
|
> **Tip:** Imported tables retain all their data as editable rows. You can add formula columns, charts, and workflow triggers on top of imported data.
|
|
112
118
|
|
|
@@ -150,7 +156,7 @@ Jordan schedules a weekly status summary using plain English instead of cron syn
|
|
|
150
156
|
|
|
151
157
|
### Step 11: Monitor Spending and Budgets
|
|
152
158
|
|
|
153
|
-

|
|
154
160
|
|
|
155
161
|
1. Click **Cost & Usage** in the sidebar
|
|
156
162
|
2. Review **total spend** for the current billing period
|
|
@@ -188,12 +194,14 @@ Jordan's agents have been running in the background. Some have generated handoff
|
|
|
188
194
|
2. For permission requests, review the tool name, arguments, and reason
|
|
189
195
|
3. Choose **Approve**, **Deny**, or **Always Allow**
|
|
190
196
|
4. For handoffs, approve to let the receiving agent begin work
|
|
197
|
+
5. If an agent sends an **AskUserQuestion** notification, type your answer in the inline reply field — there is no approve/deny, just a short response that lets the agent resume
|
|
198
|
+
6. Watch for **upgrade available** notifications and the occasional upgrade-failure alert (raised only after three consecutive poller failures, so these should be rare)
|
|
191
199
|
|
|
192
200
|
### Step 15: Configure Multi-Channel Notifications
|
|
193
201
|
|
|
194
202
|
Jordan sets up Slack so the entire team receives schedule results and important alerts.
|
|
195
203
|
|
|
196
|
-

|
|
197
205
|
|
|
198
206
|
1. Open **Settings** and scroll to **Delivery Channels**
|
|
199
207
|
2. Click **+ Add Channel** and select **Slack**
|
|
@@ -205,13 +213,14 @@ Jordan sets up Slack so the entire team receives schedule results and important
|
|
|
205
213
|
|
|
206
214
|
### Step 16: Manage Schedules
|
|
207
215
|
|
|
208
|
-

|
|
209
217
|
|
|
210
218
|
1. Return to **Schedules**
|
|
211
|
-
2. Locate the "Weekly Status Report" schedule
|
|
212
|
-
3.
|
|
213
|
-
4.
|
|
214
|
-
5.
|
|
219
|
+
2. Locate the "Weekly Status Report" schedule and click to open its **detail sheet**
|
|
220
|
+
3. Review the **firing history** with timestamps and outcomes -- suppressed heartbeat runs appear dimmed
|
|
221
|
+
4. Check **Next Run** to confirm the cadence
|
|
222
|
+
5. Use the **Pause/Resume** toggle when you need to temporarily silence a schedule during quiet periods
|
|
223
|
+
6. Edit or delete as needed
|
|
215
224
|
|
|
216
225
|
### Step 17: What's Next
|
|
217
226
|
|