usesteady 0.1.0-alpha.8 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +130 -0
- package/README.md +93 -30
- package/dist/server-admin.d.ts.map +1 -1
- package/dist/server-admin.js +73 -5
- package/dist/server-admin.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +123 -2
- package/dist/server.js.map +1 -1
- package/dist/src/claude/adapters/multi-llm-adapter.d.ts +72 -0
- package/dist/src/claude/adapters/multi-llm-adapter.d.ts.map +1 -0
- package/dist/src/claude/adapters/multi-llm-adapter.js +423 -0
- package/dist/src/claude/adapters/multi-llm-adapter.js.map +1 -0
- package/dist/src/claude/adapters/multi-llm-types.d.ts +246 -0
- package/dist/src/claude/adapters/multi-llm-types.d.ts.map +1 -0
- package/dist/src/claude/adapters/multi-llm-types.js +262 -0
- package/dist/src/claude/adapters/multi-llm-types.js.map +1 -0
- package/dist/src/claude/adapters/openai-compatible-adapter.d.ts +99 -0
- package/dist/src/claude/adapters/openai-compatible-adapter.d.ts.map +1 -0
- package/dist/src/claude/adapters/openai-compatible-adapter.js +424 -0
- package/dist/src/claude/adapters/openai-compatible-adapter.js.map +1 -0
- package/dist/src/claude/index.d.ts +6 -0
- package/dist/src/claude/index.d.ts.map +1 -1
- package/dist/src/claude/index.js +4 -0
- package/dist/src/claude/index.js.map +1 -1
- package/dist/src/friction/activation.d.ts.map +1 -1
- package/dist/src/friction/activation.js +9 -0
- package/dist/src/friction/activation.js.map +1 -1
- package/dist/src/friction/github-issues.d.ts +6 -0
- package/dist/src/friction/github-issues.d.ts.map +1 -1
- package/dist/src/friction/github-issues.js +9 -0
- package/dist/src/friction/github-issues.js.map +1 -1
- package/dist/src/friction/posthog.d.ts +33 -0
- package/dist/src/friction/posthog.d.ts.map +1 -0
- package/dist/src/friction/posthog.js +106 -0
- package/dist/src/friction/posthog.js.map +1 -0
- package/dist/src/intake/intake-service.d.ts +26 -0
- package/dist/src/intake/intake-service.d.ts.map +1 -1
- package/dist/src/intake/intake-service.js +46 -0
- package/dist/src/intake/intake-service.js.map +1 -1
- package/dist/src/intake/intent-families.d.ts +85 -0
- package/dist/src/intake/intent-families.d.ts.map +1 -0
- package/dist/src/intake/intent-families.js +69 -0
- package/dist/src/intake/intent-families.js.map +1 -0
- package/dist/src/intake/llm-classifier.d.ts +46 -0
- package/dist/src/intake/llm-classifier.d.ts.map +1 -0
- package/dist/src/intake/llm-classifier.js +177 -0
- package/dist/src/intake/llm-classifier.js.map +1 -0
- package/dist/src/interaction/guidance-order.js +3 -3
- package/dist/src/interaction/guidance-order.js.map +1 -1
- package/dist/src/product/cursor-product-session.d.ts +15 -0
- package/dist/src/product/cursor-product-session.d.ts.map +1 -1
- package/dist/src/product/cursor-product-session.js +206 -3
- package/dist/src/product/cursor-product-session.js.map +1 -1
- package/dist/src/prv/patterns.d.ts.map +1 -1
- package/dist/src/prv/patterns.js +10 -1
- package/dist/src/prv/patterns.js.map +1 -1
- package/dist/src/safety/detectors/arbitrary-exec.detector.d.ts.map +1 -1
- package/dist/src/safety/detectors/arbitrary-exec.detector.js +21 -4
- package/dist/src/safety/detectors/arbitrary-exec.detector.js.map +1 -1
- package/dist/src/safety/detectors/destructive.detector.d.ts.map +1 -1
- package/dist/src/safety/detectors/destructive.detector.js +2 -0
- package/dist/src/safety/detectors/destructive.detector.js.map +1 -1
- package/dist/src/shell/cli/claude-setup.d.ts +4 -4
- package/dist/src/shell/cli/claude-setup.d.ts.map +1 -1
- package/dist/src/shell/cli/claude-setup.js +22 -19
- package/dist/src/shell/cli/claude-setup.js.map +1 -1
- package/dist/src/shell/cli/draft/intent-to-tasks.d.ts +35 -0
- package/dist/src/shell/cli/draft/intent-to-tasks.d.ts.map +1 -0
- package/dist/src/shell/cli/draft/intent-to-tasks.js +148 -0
- package/dist/src/shell/cli/draft/intent-to-tasks.js.map +1 -0
- package/dist/src/shell/cli/main.d.ts +20 -20
- package/dist/src/shell/cli/main.d.ts.map +1 -1
- package/dist/src/shell/cli/main.js +327 -72
- package/dist/src/shell/cli/main.js.map +1 -1
- package/dist/src/shell/cli/onboarding.d.ts +1 -1
- package/dist/src/shell/cli/onboarding.d.ts.map +1 -1
- package/dist/src/shell/cli/onboarding.js +26 -19
- package/dist/src/shell/cli/onboarding.js.map +1 -1
- package/dist/src/shell/cli/use-steady.d.ts +14 -18
- package/dist/src/shell/cli/use-steady.d.ts.map +1 -1
- package/dist/src/shell/cli/use-steady.js +277 -81
- package/dist/src/shell/cli/use-steady.js.map +1 -1
- package/dist/src/shell/render.d.ts.map +1 -1
- package/dist/src/shell/render.js +3 -1
- package/dist/src/shell/render.js.map +1 -1
- package/dist/src/shell/tui/app.d.ts +8 -0
- package/dist/src/shell/tui/app.d.ts.map +1 -0
- package/dist/src/shell/tui/app.js +5 -0
- package/dist/src/shell/tui/app.js.map +1 -0
- package/dist/src/shell/tui/components/BlockedReasonPanel.d.ts +21 -0
- package/dist/src/shell/tui/components/BlockedReasonPanel.d.ts.map +1 -0
- package/dist/src/shell/tui/components/BlockedReasonPanel.js +9 -0
- package/dist/src/shell/tui/components/BlockedReasonPanel.js.map +1 -0
- package/dist/src/shell/tui/components/ConsensusPanel.d.ts +27 -0
- package/dist/src/shell/tui/components/ConsensusPanel.d.ts.map +1 -0
- package/dist/src/shell/tui/components/ConsensusPanel.js +14 -0
- package/dist/src/shell/tui/components/ConsensusPanel.js.map +1 -0
- package/dist/src/shell/tui/components/StepList.d.ts +14 -0
- package/dist/src/shell/tui/components/StepList.d.ts.map +1 -0
- package/dist/src/shell/tui/components/StepList.js +34 -0
- package/dist/src/shell/tui/components/StepList.js.map +1 -0
- package/dist/src/shell/tui/components/SystemWillPanel.d.ts +12 -0
- package/dist/src/shell/tui/components/SystemWillPanel.d.ts.map +1 -0
- package/dist/src/shell/tui/components/SystemWillPanel.js +9 -0
- package/dist/src/shell/tui/components/SystemWillPanel.js.map +1 -0
- package/dist/src/shell/tui/components/WorkflowView.d.ts +11 -0
- package/dist/src/shell/tui/components/WorkflowView.d.ts.map +1 -0
- package/dist/src/shell/tui/components/WorkflowView.js +21 -0
- package/dist/src/shell/tui/components/WorkflowView.js.map +1 -0
- package/dist/src/shell/tui/hooks/useWorkflowState.d.ts +10 -0
- package/dist/src/shell/tui/hooks/useWorkflowState.d.ts.map +1 -0
- package/dist/src/shell/tui/hooks/useWorkflowState.js +28 -0
- package/dist/src/shell/tui/hooks/useWorkflowState.js.map +1 -0
- package/dist/src/shell/tui/index.d.ts +8 -0
- package/dist/src/shell/tui/index.d.ts.map +1 -0
- package/dist/src/shell/tui/index.js +10 -0
- package/dist/src/shell/tui/index.js.map +1 -0
- package/dist/src/shell/tui/state-bridge.d.ts +37 -0
- package/dist/src/shell/tui/state-bridge.d.ts.map +1 -0
- package/dist/src/shell/tui/state-bridge.js +137 -0
- package/dist/src/shell/tui/state-bridge.js.map +1 -0
- package/dist/src/shell/tui/types.d.ts +56 -0
- package/dist/src/shell/tui/types.d.ts.map +1 -0
- package/dist/src/shell/tui/types.js +9 -0
- package/dist/src/shell/tui/types.js.map +1 -0
- package/dist/src/shell/workflow-render.d.ts.map +1 -1
- package/dist/src/shell/workflow-render.js +28 -3
- package/dist/src/shell/workflow-render.js.map +1 -1
- package/dist/src/shell/workflow-shell.js +3 -3
- package/dist/src/shell/workflow-shell.js.map +1 -1
- package/dist/src/understand/completion/completion.d.ts.map +1 -1
- package/dist/src/understand/completion/completion.js +16 -8
- package/dist/src/understand/completion/completion.js.map +1 -1
- package/dist/src/understand/completion/rules.d.ts +74 -2
- package/dist/src/understand/completion/rules.d.ts.map +1 -1
- package/dist/src/understand/completion/rules.js +338 -11
- package/dist/src/understand/completion/rules.js.map +1 -1
- package/dist/src/understand/disambiguation/detectors/missing-context.detector.d.ts.map +1 -1
- package/dist/src/understand/disambiguation/detectors/missing-context.detector.js +10 -8
- package/dist/src/understand/disambiguation/detectors/missing-context.detector.js.map +1 -1
- package/dist/src/understand/intent-interpretation/intent-interpretation.js +6 -6
- package/dist/src/understand/intent-interpretation/intent-interpretation.js.map +1 -1
- package/dist/src/understand/intent-interpretation/types.d.ts +20 -0
- package/dist/src/understand/intent-interpretation/types.d.ts.map +1 -1
- package/dist/src/understand/interpretation/parser.d.ts.map +1 -1
- package/dist/src/understand/interpretation/parser.js +28 -0
- package/dist/src/understand/interpretation/parser.js.map +1 -1
- package/dist/src/understand/silent-guidance/selector.d.ts +4 -3
- package/dist/src/understand/silent-guidance/selector.d.ts.map +1 -1
- package/dist/src/understand/silent-guidance/selector.js +18 -3
- package/dist/src/understand/silent-guidance/selector.js.map +1 -1
- package/dist/src/understand/silent-guidance/templates.d.ts.map +1 -1
- package/dist/src/understand/silent-guidance/templates.js +29 -7
- package/dist/src/understand/silent-guidance/templates.js.map +1 -1
- package/dist/src/understand/silent-guidance/types.d.ts +2 -1
- package/dist/src/understand/silent-guidance/types.d.ts.map +1 -1
- package/dist/src/workflow/coordinator.d.ts.map +1 -1
- package/dist/src/workflow/coordinator.js +45 -1
- package/dist/src/workflow/coordinator.js.map +1 -1
- package/package.json +16 -6
- package/ui/README.md +0 -73
- package/ui/dist/ai.txt +0 -14
- package/ui/dist/apple-icon.png +0 -0
- package/ui/dist/assets/index-C_i9832M.js +0 -268
- package/ui/dist/assets/index-D_rglT6E.css +0 -2
- package/ui/dist/favicon-16.png +0 -0
- package/ui/dist/favicon-32.png +0 -0
- package/ui/dist/favicon.svg +0 -22
- package/ui/dist/icon-192.png +0 -0
- package/ui/dist/icon-512.png +0 -0
- package/ui/dist/icon.png +0 -0
- package/ui/dist/icons.svg +0 -24
- package/ui/dist/index.html +0 -19
- package/ui/dist/robots.txt +0 -71
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0-alpha.10 — UX Clarity Layer
|
|
4
|
+
|
|
5
|
+
**Released:** April 2026
|
|
6
|
+
**npm tag:** `alpha` — opt in with `npm install -g usesteady@alpha`
|
|
7
|
+
**Latest stable tag:** `0.1.0-alpha.4` (unchanged)
|
|
8
|
+
|
|
9
|
+
This release adds a clarity layer on top of the existing execution core. Nothing
|
|
10
|
+
in the coordinator, policy engine, or consensus system was changed. What changed
|
|
11
|
+
is everything the user sees before and after execution runs.
|
|
12
|
+
|
|
13
|
+
### What changed
|
|
14
|
+
|
|
15
|
+
**Draft Mode** (`usesteady "plain English instruction"`)
|
|
16
|
+
|
|
17
|
+
The CLI now accepts free-text input directly. It translates the intent into
|
|
18
|
+
structured steps, shows them with `✔` / `?` indicators, and asks for
|
|
19
|
+
confirmation before routing to the existing execution pipeline. Unrecognised
|
|
20
|
+
clauses are marked `needs_confirmation: true` and pass through with the original
|
|
21
|
+
text preserved — nothing is silently dropped.
|
|
22
|
+
|
|
23
|
+
**`usesteady help` command**
|
|
24
|
+
|
|
25
|
+
New `help` subcommand shows supported actions, exact formats, and an honest
|
|
26
|
+
description of plain-English input. Distinct from `--help`, which shows
|
|
27
|
+
command-line options.
|
|
28
|
+
|
|
29
|
+
**Consensus explanation in CLI**
|
|
30
|
+
|
|
31
|
+
After a workflow completes, the CLI prints a human-readable consensus result
|
|
32
|
+
when multi-model mode was active. Uses file-offset correlation so the output
|
|
33
|
+
matches this run only. Shows "Passed (N rounds)" on success, or the specific
|
|
34
|
+
disagreement reason (capability / scope / semantic) on block. No hashes or
|
|
35
|
+
internal enum names exposed.
|
|
36
|
+
|
|
37
|
+
**Intake failure guidance**
|
|
38
|
+
|
|
39
|
+
When one or more workflow steps are skipped by the intake parser
|
|
40
|
+
(`skipped_by_intake`), the completed/stopped CLI frame now appends the
|
|
41
|
+
supported format examples — matching the guidance already shown in the web UI.
|
|
42
|
+
|
|
43
|
+
**UI copy updates**
|
|
44
|
+
|
|
45
|
+
- Consensus indicator: `"multi · ● Unanimous 2r"` → `"Multi-model check: ● Passed (2 rounds)"`
|
|
46
|
+
- Policy block label: `"Blocked by policy"` → `"Blocked — models did not agree on execution"`
|
|
47
|
+
|
|
48
|
+
**Marketing site — story shift**
|
|
49
|
+
|
|
50
|
+
Landing page: new `FlowSection` with the four-step Describe → Preview → Approve
|
|
51
|
+
→ Execute flow. CLI demo updated to show Draft Mode. Consensus section updated
|
|
52
|
+
to show concrete pass/block examples instead of abstract architecture copy.
|
|
53
|
+
|
|
54
|
+
Docs page: restructured to be usable-first. New sections: Supported Actions,
|
|
55
|
+
Examples (six real commands), When Blocked (three reasons with fixes). No
|
|
56
|
+
internal terms, no invariant documentation, no architecture theory in the
|
|
57
|
+
user-facing path.
|
|
58
|
+
|
|
59
|
+
### What was not changed
|
|
60
|
+
|
|
61
|
+
- The coordinator, Forge execution loop, and all advance functions
|
|
62
|
+
- The multi-LLM consensus policy and `ConsensusAuditRecord` type
|
|
63
|
+
- All INV-ML-, INV-CE- invariants
|
|
64
|
+
- The `SYSTEM WILL` format
|
|
65
|
+
- The approval authority model — human approval required before every step
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 0.1.0-alpha.9 — Deterministic Execution Runtime
|
|
70
|
+
|
|
71
|
+
**Released:** April 2026
|
|
72
|
+
**npm tag:** `alpha` — opt in with `npm install -g usesteady@alpha`
|
|
73
|
+
**Latest stable tag:** `0.1.0-alpha.4` (unchanged)
|
|
74
|
+
|
|
75
|
+
This release formalises the execution layer that has been running in controlled
|
|
76
|
+
environments since the public alpha. The core guarantee — nothing runs without
|
|
77
|
+
explicit human approval — is unchanged. What is new is the architectural depth
|
|
78
|
+
behind that guarantee.
|
|
79
|
+
|
|
80
|
+
### What changed
|
|
81
|
+
|
|
82
|
+
**Deterministic workflow execution**
|
|
83
|
+
|
|
84
|
+
The workflow coordinator sequences approved tasks through a fixed state machine:
|
|
85
|
+
`approve → execute → observe → resolve`. Every transition is explicit. No step
|
|
86
|
+
is inferred, skipped, or reordered. The same input produces the same approval
|
|
87
|
+
request every time.
|
|
88
|
+
|
|
89
|
+
**Optional multi-model policy enforcement**
|
|
90
|
+
|
|
91
|
+
When `USESTEADY_LLM_MODE=multi` is set, execution requests require agreement
|
|
92
|
+
across models before proceeding. Agreement is defined as matching normalised
|
|
93
|
+
decision hashes — not just multiple "accepted" responses. If models disagree,
|
|
94
|
+
execution is blocked. This is disabled by default.
|
|
95
|
+
|
|
96
|
+
**Fail-closed behaviour**
|
|
97
|
+
|
|
98
|
+
Policy disagreement is a hard stop, not a fallback. The system does not proceed
|
|
99
|
+
on partial agreement, does not fall back to a single model's verdict, and does
|
|
100
|
+
not silently degrade. When the policy layer blocks execution, the failure note
|
|
101
|
+
says why.
|
|
102
|
+
|
|
103
|
+
**Full audit trail**
|
|
104
|
+
|
|
105
|
+
Every execution decision is logged with its outcome, reason, and — in
|
|
106
|
+
multi-model mode — the consensus record for that request. The log is
|
|
107
|
+
append-only. Nothing that ran is absent from the record.
|
|
108
|
+
|
|
109
|
+
### Notes
|
|
110
|
+
|
|
111
|
+
- Multi-model mode is optional and inactive by default. Enable it with
|
|
112
|
+
`USESTEADY_LLM_MODE=multi` and the appropriate API keys.
|
|
113
|
+
- No UI code is included in this package. The runtime is fully standalone.
|
|
114
|
+
- The approval authority model is unchanged. Human approval is required before
|
|
115
|
+
any step executes, regardless of what the policy layer returns.
|
|
116
|
+
- Consensus verdicts are input signals to the coordinator. They do not override
|
|
117
|
+
human approval authority.
|
|
118
|
+
|
|
119
|
+
### What was not changed
|
|
120
|
+
|
|
121
|
+
- The approval flow visible to users
|
|
122
|
+
- The `SYSTEM WILL` format
|
|
123
|
+
- The CLI interface
|
|
124
|
+
- Any existing workflow spec format
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 0.1.0-alpha.9 and earlier
|
|
129
|
+
|
|
130
|
+
See git history for the public alpha changelog.
|
package/README.md
CHANGED
|
@@ -1,23 +1,44 @@
|
|
|
1
|
-
# UseSteady
|
|
1
|
+
# UseSteady - Review AI actions before they run
|
|
2
2
|
|
|
3
|
-
UseSteady shows you exactly what AI will do
|
|
3
|
+
UseSteady shows you exactly what AI will do - before it executes anything.
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```bash
|
|
6
|
+
# Interactive session
|
|
6
7
|
npx usesteady
|
|
8
|
+
|
|
9
|
+
# Explicit input - Windows PowerShell and zsh safe
|
|
10
|
+
npx usesteady --prompt "replace 'Submit' with 'Send' in src/Button.tsx"
|
|
11
|
+
|
|
12
|
+
# Piped stdin
|
|
13
|
+
echo "rename old.ts to new.ts" | npx usesteady
|
|
14
|
+
|
|
15
|
+
# CI / automation - zero prompts
|
|
16
|
+
npx usesteady run spec.json --yes
|
|
7
17
|
```
|
|
8
18
|
|
|
9
19
|
---
|
|
10
20
|
|
|
11
21
|
## Why
|
|
12
22
|
|
|
13
|
-
AI tools can generate code, run commands, and modify files
|
|
23
|
+
AI tools can generate code, run commands, and modify files - often before you fully understand what will change.
|
|
14
24
|
|
|
15
25
|
UseSteady adds a review layer:
|
|
16
26
|
|
|
17
|
-
- **SYSTEM WILL**
|
|
18
|
-
- **Risk level**
|
|
19
|
-
- **WHY explanation**
|
|
20
|
-
- **Approve / Reject**
|
|
27
|
+
- **SYSTEM WILL** - the exact change, not a summary
|
|
28
|
+
- **Risk level** - LOW / MEDIUM / HIGH, derived from what is actually changing
|
|
29
|
+
- **WHY explanation** - what this does and why it was triggered
|
|
30
|
+
- **Approve / Reject** - per step, before anything runs
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## How it works
|
|
35
|
+
|
|
36
|
+
Describe what you want to change. UseSteady translates it into a safe, structured change.
|
|
37
|
+
If it can't, it helps you rewrite it before anything runs.
|
|
38
|
+
|
|
39
|
+
Every request becomes one of a few safe operations: **replace, rename, create, delete, or run.**
|
|
40
|
+
|
|
41
|
+
**Public alpha:** Exact operations execute immediately. Ambiguous or multi-step requests are guided to a specific form before anything runs.
|
|
21
42
|
|
|
22
43
|
---
|
|
23
44
|
|
|
@@ -31,31 +52,62 @@ $ npx usesteady
|
|
|
31
52
|
AI can propose changes.
|
|
32
53
|
You approve before they run.
|
|
33
54
|
|
|
34
|
-
|
|
35
|
-
>
|
|
36
|
-
|
|
37
|
-
Generating execution plan...
|
|
55
|
+
Describe what you want to change:
|
|
56
|
+
> replace "Submit" with "Continue" in src/components/Button.tsx
|
|
38
57
|
|
|
39
58
|
SYSTEM WILL
|
|
40
59
|
|
|
41
|
-
1.
|
|
42
|
-
Replace bg-blue-500 → bg-indigo-600
|
|
60
|
+
1. Replace "Submit" → "Continue" in src/components/Button.tsx
|
|
43
61
|
|
|
44
62
|
RISK: LOW
|
|
45
63
|
|
|
46
64
|
WHY
|
|
47
|
-
Updates
|
|
65
|
+
Updates button label. Styling only, no logic affected.
|
|
48
66
|
|
|
49
|
-
|
|
67
|
+
Approve this task? (y/n)
|
|
50
68
|
|
|
51
|
-
>
|
|
69
|
+
> y
|
|
52
70
|
|
|
53
|
-
✓ Step approved
|
|
71
|
+
✓ Step approved - Button.tsx updated.
|
|
54
72
|
|
|
55
73
|
All steps reviewed.
|
|
56
74
|
Return to your workflow to continue.
|
|
57
75
|
```
|
|
58
76
|
|
|
77
|
+
If your input is ambiguous, UseSteady asks you to make it specific first:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
> update the button text
|
|
81
|
+
|
|
82
|
+
────────────────────────────────────────────────────
|
|
83
|
+
[Cursor] NOT EXECUTE
|
|
84
|
+
────────────────────────────────────────────────────
|
|
85
|
+
Which file should this apply to?
|
|
86
|
+
|
|
87
|
+
Try one of these:
|
|
88
|
+
→ replace "Submit" with "Continue" in src/components/Button.tsx
|
|
89
|
+
→ rename Button.tsx to PrimaryButton.tsx
|
|
90
|
+
→ replace "<current text>" with "<new text>" in <file>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### How requests are handled
|
|
94
|
+
|
|
95
|
+
| Input type | What happens |
|
|
96
|
+
|---|---|
|
|
97
|
+
| Clear - exact file, value, path | Runs immediately after approval |
|
|
98
|
+
| Missing info - file or value not given | Asks a specific question |
|
|
99
|
+
| Ambiguous - could mean multiple things | Suggests a concrete rewrite |
|
|
100
|
+
| Too broad - large or multi-step scope | Asks you to break it down |
|
|
101
|
+
|
|
102
|
+
**UseSteady will never guess and execute.**
|
|
103
|
+
|
|
104
|
+
### Mental model
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
Exact input → SYSTEM WILL → You approve → runs
|
|
108
|
+
Vague input → Guidance → You rewrite → SYSTEM WILL
|
|
109
|
+
```
|
|
110
|
+
|
|
59
111
|
### High risk example
|
|
60
112
|
|
|
61
113
|
```
|
|
@@ -65,17 +117,16 @@ $ npx usesteady
|
|
|
65
117
|
|
|
66
118
|
Removes deprecated.ts and all its exports
|
|
67
119
|
Any import of this file will fail immediately after deletion
|
|
68
|
-
No automatic recovery
|
|
120
|
+
No automatic recovery - requires git revert if this was a mistake
|
|
69
121
|
|
|
70
122
|
RISK: HIGH
|
|
71
123
|
|
|
72
124
|
WHY
|
|
73
125
|
Removes deprecated utilities no longer used.
|
|
74
126
|
|
|
75
|
-
⚠ HIGH RISK
|
|
127
|
+
⚠ HIGH RISK - cannot be undone without version control
|
|
76
128
|
|
|
77
|
-
|
|
78
|
-
[r] Reject
|
|
129
|
+
Approve this task? (y/n) ⚠ HIGH RISK
|
|
79
130
|
```
|
|
80
131
|
|
|
81
132
|
---
|
|
@@ -86,21 +137,33 @@ $ npx usesteady
|
|
|
86
137
|
- No vague summaries
|
|
87
138
|
- No hidden changes
|
|
88
139
|
|
|
89
|
-
You see what changes, why it changes, and how risky it is
|
|
140
|
+
You see what changes, why it changes, and how risky it is - before anything runs.
|
|
90
141
|
|
|
91
142
|
---
|
|
92
143
|
|
|
93
144
|
## Install
|
|
94
145
|
|
|
95
146
|
```bash
|
|
96
|
-
# No install needed
|
|
147
|
+
# No install needed - run directly
|
|
97
148
|
npx usesteady
|
|
98
149
|
|
|
99
150
|
# Or install globally
|
|
100
151
|
npm install -g usesteady
|
|
101
152
|
```
|
|
102
153
|
|
|
103
|
-
Requires Node.js 18+. Runs fully local.
|
|
154
|
+
Requires Node.js 18+. Runs fully local. Optional: set `ANTHROPIC_API_KEY` to enable richer guidance for ambiguous inputs.
|
|
155
|
+
|
|
156
|
+
### One path per environment
|
|
157
|
+
|
|
158
|
+
| Environment | Command |
|
|
159
|
+
|---|---|
|
|
160
|
+
| Interactive (any) | `npx usesteady` |
|
|
161
|
+
| Windows PowerShell | `npx usesteady --prompt "replace 'X' with 'Y' in file"` |
|
|
162
|
+
| macOS / zsh | `npx usesteady --prompt 'replace "X" with "Y" in file'` |
|
|
163
|
+
| Piped stdin | `echo "rename old.ts to new.ts" \| npx usesteady` |
|
|
164
|
+
| CI / scripts | `npx usesteady run spec.json --yes` |
|
|
165
|
+
|
|
166
|
+
`--prompt` avoids shell quoting issues across environments. `--yes` collapses all approval prompts - use it only in CI where you've reviewed the spec.
|
|
104
167
|
|
|
105
168
|
---
|
|
106
169
|
|
|
@@ -108,7 +171,7 @@ Requires Node.js 18+. Runs fully local. No cloud, no API key.
|
|
|
108
171
|
|
|
109
172
|
**AI proposes. You approve. Then it runs.**
|
|
110
173
|
|
|
111
|
-
Like `git diff`
|
|
174
|
+
Like `git diff` - but for AI actions before they execute.
|
|
112
175
|
|
|
113
176
|
---
|
|
114
177
|
|
|
@@ -116,10 +179,10 @@ Like `git diff` — but for AI actions before they execute.
|
|
|
116
179
|
|
|
117
180
|
| Term | Meaning |
|
|
118
181
|
|---|---|
|
|
119
|
-
| `SYSTEM WILL` | The exact operation that will run
|
|
120
|
-
| `SYSTEM SUGGESTS` | Options shown when AI is unsure
|
|
182
|
+
| `SYSTEM WILL` | The exact operation that will run - not a summary |
|
|
183
|
+
| `SYSTEM SUGGESTS` | Options shown when AI is unsure - not a guess |
|
|
121
184
|
| `Approve` / `Reject` | Your decision, per step |
|
|
122
|
-
| `Revert last approval` | Undo a decision (not a filesystem change
|
|
185
|
+
| `Revert last approval` | Undo a decision (not a filesystem change - nothing has run yet) |
|
|
123
186
|
| `Risk: LOW / MEDIUM / HIGH` | Derived from what is actually changing |
|
|
124
187
|
|
|
125
188
|
---
|
|
@@ -130,4 +193,4 @@ That is the guarantee. Every step. No exceptions.
|
|
|
130
193
|
|
|
131
194
|
---
|
|
132
195
|
|
|
133
|
-
[usesteady.dev](https://usesteady.dev)
|
|
196
|
+
[usesteady.dev](https://usesteady.dev) - Apache 2.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-admin.d.ts","sourceRoot":"","sources":["../server-admin.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server-admin.d.ts","sourceRoot":"","sources":["../server-admin.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AA4I1D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAoItD"}
|
package/dist/server-admin.js
CHANGED
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Never import this file unconditionally. It must remain gitignored.
|
|
11
11
|
*/
|
|
12
|
-
import { fetchPendingIssues, postComment, swapLabel, closeIssue } from "./src/friction/github-issues.js";
|
|
12
|
+
import { fetchPendingIssues, postComment, swapLabel, closeIssue, parseSubmitterEmail } from "./src/friction/github-issues.js";
|
|
13
13
|
import { classifyBatch, loadAnthropicKey } from "./src/friction/reviewer.js";
|
|
14
14
|
import { recordDecision, allDecisions, pendingPayouts, ledgerStats, markPaid, } from "./src/friction/payout-ledger.js";
|
|
15
15
|
import { readAuth, readConfig } from "./src/friction/config.js";
|
|
16
|
+
import { Resend } from "resend";
|
|
16
17
|
function getAdminContext() {
|
|
17
18
|
const auth = readAuth();
|
|
18
19
|
const config = readConfig();
|
|
@@ -20,6 +21,56 @@ function getAdminContext() {
|
|
|
20
21
|
return null;
|
|
21
22
|
return { repo: config.frictionRepo, token: auth.githubToken };
|
|
22
23
|
}
|
|
24
|
+
// ─── Email helper ─────────────────────────────────────────────────────────────
|
|
25
|
+
async function sendAcceptanceEmail(opts) {
|
|
26
|
+
const resendKey = process.env["RESEND_API_KEY"];
|
|
27
|
+
const fromAddr = process.env["RESEND_FROM"] ?? "UseSteady <noreply@usesteady.dev>";
|
|
28
|
+
if (!resendKey) {
|
|
29
|
+
process.stdout.write(`[admin] RESEND_API_KEY not set — skipping acceptance email to ${opts.to}\n`);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const resend = new Resend(resendKey);
|
|
33
|
+
const tierDisplay = opts.tier.charAt(0).toUpperCase() + opts.tier.slice(1);
|
|
34
|
+
const { error } = await resend.emails.send({
|
|
35
|
+
from: fromAddr,
|
|
36
|
+
to: opts.to,
|
|
37
|
+
subject: `Your UseSteady friction report was accepted`,
|
|
38
|
+
html: `
|
|
39
|
+
<p>Hey ${opts.submitter},</p>
|
|
40
|
+
|
|
41
|
+
<p>Your friction report has been reviewed and <strong>accepted</strong> — thank you for taking the time to write it up. It directly influenced the product.</p>
|
|
42
|
+
|
|
43
|
+
<p><strong>Tier:</strong> ${tierDisplay}<br>
|
|
44
|
+
<strong>Why it was accepted:</strong> ${opts.reason}</p>
|
|
45
|
+
|
|
46
|
+
<p>You can see the full response on your public issue:<br>
|
|
47
|
+
<a href="${opts.issueUrl}">${opts.issueUrl}</a></p>
|
|
48
|
+
|
|
49
|
+
<p>We'll be in touch within 14 days to arrange the payout. Reply to this email if you have any questions.</p>
|
|
50
|
+
|
|
51
|
+
<p>— The UseSteady team</p>
|
|
52
|
+
`,
|
|
53
|
+
text: `Hey ${opts.submitter},
|
|
54
|
+
|
|
55
|
+
Your friction report has been reviewed and accepted — thank you for taking the time to write it up. It directly influenced the product.
|
|
56
|
+
|
|
57
|
+
Tier: ${tierDisplay}
|
|
58
|
+
Why it was accepted: ${opts.reason}
|
|
59
|
+
|
|
60
|
+
You can see the full response on your public issue:
|
|
61
|
+
${opts.issueUrl}
|
|
62
|
+
|
|
63
|
+
We'll be in touch within 14 days to arrange the payout. Reply to this email if you have any questions.
|
|
64
|
+
|
|
65
|
+
— The UseSteady team`,
|
|
66
|
+
});
|
|
67
|
+
if (error) {
|
|
68
|
+
process.stdout.write(`[admin] Resend acceptance email failed for ${opts.to}: ${JSON.stringify(error)}\n`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
process.stdout.write(`[admin] Acceptance email sent to ${opts.to}\n`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
23
74
|
// ─── Shared helper ────────────────────────────────────────────────────────────
|
|
24
75
|
async function applyDecision(ctx, issue, decision, verdictReason, confidence, tier) {
|
|
25
76
|
const comment = [
|
|
@@ -32,7 +83,7 @@ async function applyDecision(ctx, issue, decision, verdictReason, confidence, ti
|
|
|
32
83
|
`**Reason:** ${verdictReason}`,
|
|
33
84
|
...(tier ? [`**Tier:** ${tier.charAt(0).toUpperCase() + tier.slice(1)}`] : []),
|
|
34
85
|
decision === "approved"
|
|
35
|
-
? `\n**Payout:** We will reach out to
|
|
86
|
+
? `\n**Payout:** We will reach out to arrange payment within 14 days.`
|
|
36
87
|
: `\n**Note:** This report does not meet the payout criteria. No payment will be issued.`,
|
|
37
88
|
"",
|
|
38
89
|
"---",
|
|
@@ -51,6 +102,23 @@ async function applyDecision(ctx, issue, decision, verdictReason, confidence, ti
|
|
|
51
102
|
confidence,
|
|
52
103
|
...(tier ? { tier } : {}),
|
|
53
104
|
});
|
|
105
|
+
// Send acceptance email to submitter if we have their email address
|
|
106
|
+
if (decision === "approved" && issue.body) {
|
|
107
|
+
const email = parseSubmitterEmail(issue.body);
|
|
108
|
+
if (email) {
|
|
109
|
+
const submitterName = issue.body.match(/\*\*Submitter:\*\*\s*([^·\n@]+)/)?.[1]?.trim() ?? "there";
|
|
110
|
+
await sendAcceptanceEmail({
|
|
111
|
+
to: email,
|
|
112
|
+
submitter: submitterName,
|
|
113
|
+
issueUrl: issue.html_url,
|
|
114
|
+
tier: tier ?? "bronze",
|
|
115
|
+
reason: verdictReason,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
process.stdout.write(`[admin] No submitter email found in issue #${issue.number} body — skipping email\n`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
54
122
|
}
|
|
55
123
|
// ─── Route registration ───────────────────────────────────────────────────────
|
|
56
124
|
export function registerAdminRoutes(app) {
|
|
@@ -101,13 +169,13 @@ export function registerAdminRoutes(app) {
|
|
|
101
169
|
res.status(401).json({ error: "No GitHub token." });
|
|
102
170
|
return;
|
|
103
171
|
}
|
|
104
|
-
const { issueNumber, decision, verdictReason, confidence, issueUrl, githubLogin, tier } = req.body;
|
|
172
|
+
const { issueNumber, decision, verdictReason, confidence, issueUrl, githubLogin, issueBody, tier } = req.body;
|
|
105
173
|
if (!issueNumber || !decision || !verdictReason) {
|
|
106
174
|
res.status(400).json({ error: "issueNumber, decision, verdictReason are required." });
|
|
107
175
|
return;
|
|
108
176
|
}
|
|
109
|
-
//
|
|
110
|
-
const issue = { number: issueNumber, html_url: issueUrl, user: { login: githubLogin } };
|
|
177
|
+
// Include body so applyDecision can extract the submitter email for auto-response
|
|
178
|
+
const issue = { number: issueNumber, html_url: issueUrl, user: { login: githubLogin }, body: issueBody ?? "" };
|
|
111
179
|
try {
|
|
112
180
|
await applyDecision(ctx, issue, decision, verdictReason, confidence, tier);
|
|
113
181
|
res.json({ ok: true });
|
package/dist/server-admin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-admin.js","sourceRoot":"","sources":["../server-admin.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gFAAgF;AAChF,2DAA2D;AAC3D;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"server-admin.js","sourceRoot":"","sources":["../server-admin.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gFAAgF;AAChF,2DAA2D;AAC3D;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAA6B,4BAA4B,CAAC;AACpG,OAAO,EACL,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,GAEpE,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAwC,0BAA0B,CAAC;AAElG,OAAO,EAAE,MAAM,EAAE,MAAsD,QAAQ,CAAC;AAEhF,SAAS,eAAe;IACtB,MAAM,IAAI,GAAK,QAAQ,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,WAAW;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAChE,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,mBAAmB,CAAC,IAMlC;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,mCAAmC,CAAC;IAEpF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACnG,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACzC,IAAI,EAAK,QAAQ;QACjB,EAAE,EAAO,IAAI,CAAC,EAAE;QAChB,OAAO,EAAE,6CAA6C;QACtD,IAAI,EAAE;SACD,IAAI,CAAC,SAAS;;;;4BAIK,WAAW;wCACC,IAAI,CAAC,MAAM;;;WAGxC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;;;;;CAKzC;QACG,IAAI,EAAE,OAAO,IAAI,CAAC,SAAS;;;;QAIvB,WAAW;uBACI,IAAI,CAAC,MAAM;;;EAGhC,IAAI,CAAC,QAAQ;;;;qBAIM;KAClB,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5G,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,aAAa,CAC1B,GAA8C,EAC9C,KAA0B,EAC1B,QAAsC,EACtC,aAAqB,EACrB,UAAqB,EACrB,IAAyB;IAEzB,MAAM,OAAO,GAAG;QACd,QAAQ,KAAK,UAAU;YACrB,CAAC,CAAC,iCAAiC;YACnC,CAAC,CAAC,iCAAiC;QACrC,EAAE;QACF,iBAAiB,QAAQ,EAAE;QAC3B,mBAAmB,UAAU,GAAG;QAChC,eAAe,aAAa,EAAE;QAC9B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,QAAQ,KAAK,UAAU;YACrB,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,uFAAuF;QAC3F,EAAE;QACF,KAAK;QACL,8CAA8C,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;KAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,QAAQ,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3F,IAAI,QAAQ,KAAK,UAAU;QAAE,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEjF,cAAc,CAAC;QACb,WAAW,EAAI,KAAK,CAAC,IAAI,CAAC,KAAK;QAC/B,WAAW,EAAI,KAAK,CAAC,MAAM;QAC3B,QAAQ,EAAO,KAAK,CAAC,QAAQ;QAC7B,OAAO,EAAQ,QAAQ;QACvB,aAAa;QACb,UAAU;QACV,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1B,CAAC,CAAC;IAEH,oEAAoE;IACpE,IAAI,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;YAClG,MAAM,mBAAmB,CAAC;gBACxB,EAAE,EAAS,KAAK;gBAChB,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAG,KAAK,CAAC,QAAQ;gBACzB,IAAI,EAAO,IAAI,IAAI,QAAQ;gBAC3B,MAAM,EAAK,aAAa;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,KAAK,CAAC,MAAM,0BAA0B,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAE9E,yDAAyD;IACzD,GAAG,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAiB,EAAE;QAC1F,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC/G,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mFAAmF;IACnF,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAiB,EAAE;QAC7F,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1E,IAAI,CAAC;YACH,MAAM,MAAM,GAAI,MAAM,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAM,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI;gBACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC5C,WAAW,EAAE,KAAK,CAAC,MAAM;oBACzB,KAAK,EAAQ,KAAK,CAAC,KAAK;oBACxB,OAAO;iBACR,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC1F,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAE1E,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IASxG,CAAC;QAEF,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,kFAAkF;QAClF,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE,EAAiB,CAAC;QAE9H,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3E,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8FAA8F;IAC9F,iFAAiF;IACjF,GAAG,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC/F,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAE1E,MAAM,EAAE,WAAW,GAAG,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAiC,CAAC;QAEpF,IAAI,CAAC;YACH,MAAM,MAAM,GAAI,MAAM,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAExF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;gBACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBAAC,OAAO,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACzD,IAAI,CAAC;oBACH,MAAM,aAAa,CACjB,GAAG,EAAE,KAAK,EACV,OAAO,CAAC,QAAmC,EAC3C,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAC1D,CAAC;oBACF,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU;wBAAE,QAAQ,EAAE,CAAC;;wBAC3C,QAAQ,EAAE,CAAC;oBAChB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB;gBACrE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kDAAkD;IAClD,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;QAC3E,IAAI,CAAC;YACH,MAAM,WAAW,GAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAY,KAAK,GAAG,CAAC;YAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;YAChE,MAAM,KAAK,GAAK,WAAW,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;QAC9E,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,IAAuB,CAAC;QAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxE,IAAI,CAAC;YACH,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AA8wCH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBjD"}
|