@clubnet/seedclub 0.2.37 → 0.2.39
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 +18 -29
- package/assets/SYSTEM.md +94 -0
- package/assets/extensions/seedclub/commands/seedclub.ts +122 -0
- package/assets/extensions/seedclub/commands/transcript-export.ts +191 -168
- package/assets/extensions/seedclub/commands/transcript-intent.ts +5 -2
- package/assets/extensions/seedclub/gate-state.ts +31 -14
- package/assets/extensions/seedclub/index.ts +329 -14
- package/assets/extensions/seedclub/memory-client.js +65 -0
- package/assets/extensions/seedclub/memory-helpers.js +78 -0
- package/assets/extensions/seedclub/memory.ts +615 -0
- package/assets/extensions/seedclub/platform-routing.js +351 -0
- package/assets/extensions/seedclub/recent-entities.js +786 -0
- package/assets/extensions/seedclub/tool-utils.ts +37 -6
- package/assets/extensions/seedclub/tools/deal-sourcing.ts +427 -0
- package/assets/extensions/seedclub/tools/media.ts +8 -4
- package/assets/extensions/seedclub/tools/meetings.ts +22 -12
- package/assets/extensions/seedclub/tools/web.ts +475 -0
- package/assets/extensions/seedclub/ui-copy.ts +10 -0
- package/assets/theme/dark.json +9 -7
- package/assets/theme/light.json +9 -7
- package/bin/cli.js +38 -110
- package/package.json +12 -4
- package/packages/seedclub-runtime/README.md +13 -0
- package/packages/seedclub-runtime/package.json +5 -0
- package/packages/seedclub-runtime/pi-contract-baseline.json +62 -0
- package/packages/seedclub-runtime/src/contract.test.mjs +90 -0
- package/packages/seedclub-runtime/src/index.mjs +259 -0
- package/packages/seedclub-runtime/src/index.test.mjs +49 -0
- package/packages/seedclub-runtime/src/workspace-deps.mjs +66 -0
- package/packages/seedclub-tui/README.md +19 -0
- package/packages/seedclub-tui/package.json +5 -0
- package/packages/seedclub-tui/src/app/interactive-mode.mjs +2518 -0
- package/packages/seedclub-tui/src/cli.mjs +14 -0
- package/packages/seedclub-tui/src/index.mjs +48 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/README.md +11 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/config.js +76 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/core/footer-data-provider.js +143 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/core/keybindings.js +204 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/core/tools/edit-diff.js +243 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/core/tools/path-utils.js +81 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/core/tools/truncate.js +205 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/assistant-message.js +96 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/bordered-loader.js +51 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/countdown-timer.js +34 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/custom-editor.js +70 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/diff.js +133 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/dynamic-border.js +21 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/extension-editor.js +95 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/extension-input.js +69 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/extension-selector.js +92 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/footer.js +213 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/keybinding-hints.js +61 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/login-dialog.js +132 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/oauth-selector.js +80 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/tool-execution.js +712 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/user-message.js +31 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/components/visual-truncate.js +33 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/theme/dark.json +85 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/theme/light.json +84 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/theme/theme-schema.json +335 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/modes/interactive/theme/theme.js +944 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/utils/image-convert.js +35 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/utils/photon.js +121 -0
- package/packages/seedclub-tui/src/vendor/coding-agent/utils/shell.js +38 -0
- package/postinstall.js +24 -74
- package/assets/extensions/seedclub/branding.ts +0 -52
- package/assets/extensions/seedclub/package-lock.json +0 -72
- package/assets/extensions/seedclub/package.json +0 -14
- package/assets/extensions/seedclub-ui/editor.ts +0 -110
- package/assets/extensions/seedclub-ui/footer.ts +0 -126
- package/assets/extensions/seedclub-ui/index.ts +0 -19
- package/assets/extensions/seedclub-ui/state.ts +0 -18
- package/assets/extensions/seedclub-ui/tool-progress.ts +0 -24
- package/assets/extensions/seedclub-ui/update.ts +0 -210
- package/assets/extensions/seedclub-ui/welcome.ts +0 -748
- package/bin/pi-main-launcher.js +0 -94
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Requirements: Node.js 22+
|
|
|
6
6
|
|
|
7
7
|
## What it is
|
|
8
8
|
|
|
9
|
-
`seedclub` is the Seed Club distribution of pi. This repo provides the `seedclub` launcher, installs the Seed Club theme and extensions, and adds Seed Club-specific workflows for connecting your account, using CRM
|
|
9
|
+
`seedclub` is the Seed Club distribution of pi. This repo provides the `seedclub` launcher, installs the Seed Club theme and extensions, and adds Seed Club-specific workflows for connecting your account, using CRM and meeting tools, retrieving transcripts, and working with Seed Club-backed app surfaces.
|
|
10
10
|
|
|
11
11
|
This repo is the source of truth for the published package:
|
|
12
12
|
|
|
@@ -18,15 +18,16 @@ This repo is the source of truth for the published package:
|
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm install -g @clubnet/seedclub
|
|
21
|
+
seedclub
|
|
21
22
|
```
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
Alternative:
|
|
24
25
|
|
|
25
26
|
```bash
|
|
26
|
-
seedclub
|
|
27
|
+
curl -fsSL https://raw.githubusercontent.com/seedclub/seedclub-agent/main/install.sh | bash
|
|
27
28
|
```
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
## First run
|
|
30
31
|
|
|
31
32
|
1. Run `seedclub`
|
|
32
33
|
2. Complete Seed Club sign-in when the browser opens
|
|
@@ -34,20 +35,10 @@ seedclub
|
|
|
34
35
|
4. Run `/model`
|
|
35
36
|
5. Open `/seedclub`
|
|
36
37
|
|
|
37
|
-
### Alternative: curl | bash
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
curl -fsSL https://raw.githubusercontent.com/seedclub/seedclub-agent/main/install.sh | bash
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Package access
|
|
44
|
-
|
|
45
|
-
`@clubnet/seedclub` is a public npm package. Install access is open; runtime access is enforced inside the app.
|
|
46
|
-
|
|
47
38
|
## Core workflow
|
|
48
39
|
|
|
49
40
|
1. Start the app with `seedclub`
|
|
50
|
-
2. Complete Seed Club sign-in when
|
|
41
|
+
2. Complete Seed Club sign-in when prompted
|
|
51
42
|
3. Complete `/login` and `/model` if this is your first run
|
|
52
43
|
4. Open `/seedclub`
|
|
53
44
|
5. Choose the workflow you need
|
|
@@ -55,15 +46,23 @@ curl -fsSL https://raw.githubusercontent.com/seedclub/seedclub-agent/main/instal
|
|
|
55
46
|
## Commands
|
|
56
47
|
|
|
57
48
|
| Command | What it does |
|
|
58
|
-
|
|
49
|
+
| --- | --- |
|
|
59
50
|
| `/login` | Sign in to a model provider for the underlying agent |
|
|
60
51
|
| `/model` | Choose which model to use |
|
|
61
52
|
| `/connect` | Connect your Seed Club account |
|
|
62
53
|
| `/connect-calendar` | Connect a personal Google Calendar to your Seed Club account |
|
|
63
|
-
| `/seedclub` | Main menu
|
|
64
|
-
| `/transcripts` | Export transcript VTT files with filters
|
|
54
|
+
| `/seedclub` | Main menu for Seed Club workflows |
|
|
55
|
+
| `/transcripts` | Export transcript VTT files with filters |
|
|
56
|
+
|
|
57
|
+
Natural-language transcript retrieval is also supported. Examples: `download vibhu transcripts from 11am`, `i need transcripts for all guests on 11am last week`.
|
|
58
|
+
|
|
59
|
+
## Repo docs
|
|
65
60
|
|
|
66
|
-
|
|
61
|
+
- `README.md` is the public package and repo landing page.
|
|
62
|
+
- `CONTRIBUTING.md` covers local development, architecture boundaries, and release workflow.
|
|
63
|
+
- `AGENTS.md` contains repo instructions for coding agents working in this codebase.
|
|
64
|
+
- `WORKFLOWS.md` contains Seed Club API route-selection rules.
|
|
65
|
+
- `packages/seedclub-runtime/README.md` and `packages/seedclub-tui/README.md` document package-local ownership boundaries.
|
|
67
66
|
|
|
68
67
|
## Update
|
|
69
68
|
|
|
@@ -78,16 +77,6 @@ npm uninstall -g @clubnet/seedclub
|
|
|
78
77
|
rm -rf ~/.seedclub
|
|
79
78
|
```
|
|
80
79
|
|
|
81
|
-
### Coming from the old version (curl | bash)
|
|
82
|
-
|
|
83
|
-
The previous version installed into `~/.seedclub/bin/` and modified your PATH. The npm package cleans this up automatically, but you can also remove the old PATH line from your shell profile (`~/.zshrc`, `~/.bashrc`, etc.) manually.
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
npm install -g @clubnet/seedclub
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
If you have pi installed globally (`npm install -g @mariozechner/pi-coding-agent`), that's fine — seedclub and pi are completely independent.
|
|
90
|
-
|
|
91
80
|
## License
|
|
92
81
|
|
|
93
82
|
MIT
|
package/assets/SYSTEM.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
You are a Seed Club member agent.
|
|
2
|
+
|
|
3
|
+
You help Seed Club members research, understand, remember, and act on early-stage startup deals. You are a sharp investing thought partner first, and a workflow agent second.
|
|
4
|
+
|
|
5
|
+
Seed Club's goal is to become the core knowledge base for angel investors and the network they invest from. Every deal conversation should make the member smarter, improve their private investing memory, and, when approved, add useful intelligence to the network.
|
|
6
|
+
|
|
7
|
+
## Core Posture
|
|
8
|
+
|
|
9
|
+
Members should send you every potentially interesting deck, founder pitch, company, link, or idea. They do not need conviction first. If something seems potentially interesting, help them dig in and consider surfacing it.
|
|
10
|
+
|
|
11
|
+
Default stance:
|
|
12
|
+
|
|
13
|
+
- Be concise in chat.
|
|
14
|
+
- Be opinionated, but provisional.
|
|
15
|
+
- Lead with the core insight.
|
|
16
|
+
- Use specifics and numbers.
|
|
17
|
+
- Flag unknowns clearly.
|
|
18
|
+
- Ask only high-leverage follow-up questions.
|
|
19
|
+
- Help the member form their own judgment.
|
|
20
|
+
- Do not act like your opinion is authoritative.
|
|
21
|
+
- Do not tell the member what to invest in.
|
|
22
|
+
|
|
23
|
+
You are allowed to share takes. Your take exists to start a better conversation.
|
|
24
|
+
|
|
25
|
+
Good:
|
|
26
|
+
|
|
27
|
+
"My first read is positive, but the deal turns on venue dependency."
|
|
28
|
+
"The category signal is real; I'd pressure-test whether this team has distribution."
|
|
29
|
+
"I might be wrong if the founder has a non-obvious GTM wedge."
|
|
30
|
+
|
|
31
|
+
Bad:
|
|
32
|
+
|
|
33
|
+
"This is a good deal."
|
|
34
|
+
"You should invest."
|
|
35
|
+
"The right answer is to push."
|
|
36
|
+
|
|
37
|
+
## Opinion Format
|
|
38
|
+
|
|
39
|
+
When sharing a take, use this structure:
|
|
40
|
+
|
|
41
|
+
1. First read: positive / negative / mixed / unclear
|
|
42
|
+
2. Why: 1-3 strongest reasons
|
|
43
|
+
3. Main risk or open question
|
|
44
|
+
4. What to pull on next
|
|
45
|
+
|
|
46
|
+
Example:
|
|
47
|
+
|
|
48
|
+
"First read: worth digging in. The category signal is real, the price is reasonable, and they've shipped more than most pre-seed teams. The main risk is whether Polymarket/Kalshi can build or block the consumer layer. I'd pull on venue relationships first."
|
|
49
|
+
|
|
50
|
+
Operating model:
|
|
51
|
+
|
|
52
|
+
- Be a useful general coding and computer agent first, not just a platform assistant.
|
|
53
|
+
- Inspect the real environment before making assumptions.
|
|
54
|
+
- Prefer doing the work directly over describing what you would do.
|
|
55
|
+
- Show file paths clearly when discussing code or local files.
|
|
56
|
+
- Stay within the user's actual access and permissions.
|
|
57
|
+
- If the user is asking about upstream pi internals or SDK behavior, inspect the installed upstream docs and code before answering.
|
|
58
|
+
|
|
59
|
+
Interface selection:
|
|
60
|
+
|
|
61
|
+
- Use local machine tools for code changes, file retrieval, file transforms, shell tasks, exports, and other computer-local workflows.
|
|
62
|
+
- Use Seed Club platform tools when the task is about Seed Club records, workflows, people, meetings, transcripts, media, or network operations.
|
|
63
|
+
- Use external web research only when the task is outside Seed Club's own records or when current external verification is needed.
|
|
64
|
+
- Choose the narrowest tool or workflow that can answer the question or complete the task reliably.
|
|
65
|
+
|
|
66
|
+
Seed Club platform policy:
|
|
67
|
+
|
|
68
|
+
- Prefer Seed Club tools first when the user is asking about Seed Club data or workflows.
|
|
69
|
+
- For Seed Club records questions, treat Seed Club platform tools as the primary source of truth, not the local repo or filesystem.
|
|
70
|
+
- Do not inspect local repo code, extension source, or API client helpers to rediscover Seed Club routes when a registered Seed Club tool already matches the task.
|
|
71
|
+
- Resolve program names, slugs, and shorthand against the user's accessible Seed Club programs when that context is available.
|
|
72
|
+
- Prefer metadata-first exploration before loading large transcript or media payloads.
|
|
73
|
+
- For prior-conversation questions such as "what did we talk about?" or "what were the main topics?", prefer `full_conversation` media assets when available, then use meeting transcripts only as a fallback or when the canonical meeting transcript is specifically needed.
|
|
74
|
+
- Treat local export, download, upload, and publish actions as workflow endpoints: use the purpose-built tools for those actions instead of recreating them indirectly.
|
|
75
|
+
- When the user wants files on disk or assets uploaded, keep the flow anchored in the local machine plus the relevant Seed Club platform tool.
|
|
76
|
+
- Stay scoped to the user's platform permissions and do not imply access the user does not have.
|
|
77
|
+
- Do not claim Seed Club platform data is unavailable unless a relevant Seed Club tool actually returns an auth, permission, or not-found failure.
|
|
78
|
+
|
|
79
|
+
Research and review policy:
|
|
80
|
+
|
|
81
|
+
- Treat deal, company, founder, pitch deck, memo, and research workflows as `seed-network` by default unless the user explicitly names another program.
|
|
82
|
+
- When a member drops a deck, memo, PDF, document, or image, use the Seed Club research upload tool without asking for the program and let it create a private research draft first.
|
|
83
|
+
- Do not submit a deal for Seed Club review during the initial upload, even if the user sounds excited. First review the returned document preview and summarize Founder info, Company info, Deal info, and Opportunity Summary.
|
|
84
|
+
- After summarizing, ask for missing founder/contact path, ask amount or explicit ask unknown, founder relationship, and excitement/vouch context before pushing.
|
|
85
|
+
- Submit for Seed Club review only after the member explicitly confirms. Passing or holding should stay private and should not create a shared review handoff.
|
|
86
|
+
- If document preview is partial or failed, say what could not be read and ask targeted questions instead of inventing missing facts.
|
|
87
|
+
|
|
88
|
+
External research policy:
|
|
89
|
+
|
|
90
|
+
- If the user asks an open-ended research question that is not explicitly scoped to Seed Club records, do a fast external research pass before answering.
|
|
91
|
+
- Use `search_web` first for external search and `fetch_web_page` for follow-up reads.
|
|
92
|
+
- Prefer built-in web tools over bash, curl, Python, or ad hoc scraping for external research.
|
|
93
|
+
- Gather at least 2 reputable sources, then answer with a concise synthesis.
|
|
94
|
+
- Include source URLs inline so the user can verify.
|
|
@@ -18,6 +18,7 @@ interface SeedclubDeps {
|
|
|
18
18
|
connect: (args: string | undefined, ctx: any) => Promise<boolean>;
|
|
19
19
|
connectCalendar: (ctx: any) => Promise<void>;
|
|
20
20
|
disconnect: (ctx: any) => Promise<void>;
|
|
21
|
+
showMemoryMenu?: (ctx: any) => Promise<void>;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
async function compactSeedclubContext(ctx: any) {
|
|
@@ -56,6 +57,45 @@ async function setSeedEnvironment(mode: "local" | "prod", ctx: any) {
|
|
|
56
57
|
);
|
|
57
58
|
}
|
|
58
59
|
|
|
60
|
+
async function getDefaultProgramSlug() {
|
|
61
|
+
const session = await getSessionContext();
|
|
62
|
+
if ("error" in session || !Array.isArray(session.program_access)) return "<program-slug>";
|
|
63
|
+
return session.program_access[0]?.program?.slug || "<program-slug>";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function prefillEditor(ctx: any, text: string) {
|
|
67
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
68
|
+
ctx.ui.setEditorText(text);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async function showCalendarMenu(ctx: any, deps: SeedclubDeps) {
|
|
72
|
+
const choice = await ctx.ui.select("Calendar", [
|
|
73
|
+
"Connect personal calendar",
|
|
74
|
+
"Disconnect personal calendar",
|
|
75
|
+
"Check availability",
|
|
76
|
+
]);
|
|
77
|
+
|
|
78
|
+
switch (choice) {
|
|
79
|
+
case "Connect personal calendar":
|
|
80
|
+
await deps.connectCalendar(ctx);
|
|
81
|
+
break;
|
|
82
|
+
case "Disconnect personal calendar":
|
|
83
|
+
await prefillEditor(
|
|
84
|
+
ctx,
|
|
85
|
+
"Help me disconnect my personal Google Calendar from Seed Club. Check the currently connected calendar account first and only proceed with a real disconnect if a supported Seed Club tool or route exists; otherwise tell me what manual action is needed.",
|
|
86
|
+
);
|
|
87
|
+
break;
|
|
88
|
+
case "Check availability": {
|
|
89
|
+
const defaultProgramSlug = await getDefaultProgramSlug();
|
|
90
|
+
await prefillEditor(
|
|
91
|
+
ctx,
|
|
92
|
+
`Check meeting availability for program ${defaultProgramSlug}. Ask me for the target date first if I have not provided one, then use configured availability slots exactly.`,
|
|
93
|
+
);
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
59
99
|
export function registerSeedclubCommand(pi: ExtensionAPI, deps: SeedclubDeps) {
|
|
60
100
|
pi.registerCommand("connect", {
|
|
61
101
|
description: "Connect your Seed Club account",
|
|
@@ -104,6 +144,83 @@ export function registerSeedclubCommand(pi: ExtensionAPI, deps: SeedclubDeps) {
|
|
|
104
144
|
},
|
|
105
145
|
});
|
|
106
146
|
|
|
147
|
+
pi.registerCommand("calendar", {
|
|
148
|
+
description: "Open calendar connect, disconnect, and availability actions",
|
|
149
|
+
handler: async (args, ctx) => {
|
|
150
|
+
const action = args?.trim().toLowerCase();
|
|
151
|
+
if (action === "connect") {
|
|
152
|
+
await deps.connectCalendar(ctx);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (action === "disconnect") {
|
|
156
|
+
await prefillEditor(
|
|
157
|
+
ctx,
|
|
158
|
+
"Help me disconnect my personal Google Calendar from Seed Club. Check the currently connected calendar account first and only proceed with a real disconnect if a supported Seed Club tool or route exists; otherwise tell me what manual action is needed.",
|
|
159
|
+
);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (action === "availability") {
|
|
163
|
+
const defaultProgramSlug = await getDefaultProgramSlug();
|
|
164
|
+
await prefillEditor(
|
|
165
|
+
ctx,
|
|
166
|
+
`Check meeting availability for program ${defaultProgramSlug}. Ask me for the target date first if I have not provided one, then use configured availability slots exactly.`,
|
|
167
|
+
);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
await showCalendarMenu(ctx, deps);
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
pi.registerCommand("research", {
|
|
175
|
+
description: "Open a Seed Club research prompt",
|
|
176
|
+
handler: async (_args, ctx) => {
|
|
177
|
+
await prefillEditor(
|
|
178
|
+
ctx,
|
|
179
|
+
"Help me research a Seed Network opportunity. Ask me for the company, deck, memo, source URL, or local file if needed. Save any provided material as private research first, then use Seed Club records and source-backed external research before giving me a concise first read.",
|
|
180
|
+
);
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
pi.registerCommand("source", {
|
|
185
|
+
description: "Open a source-backed research prompt",
|
|
186
|
+
handler: async (_args, ctx) => {
|
|
187
|
+
await prefillEditor(
|
|
188
|
+
ctx,
|
|
189
|
+
"Research this using source-backed evidence. Gather and verify primary or reputable sources, cite source URLs inline, separate Seed Club records from external sources, and flag unknowns clearly.",
|
|
190
|
+
);
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
pi.registerCommand("worldview", {
|
|
195
|
+
description: "Open an investing worldview prompt",
|
|
196
|
+
handler: async (_args, ctx) => {
|
|
197
|
+
await prefillEditor(
|
|
198
|
+
ctx,
|
|
199
|
+
"Summarize my current Seed Club investing worldview from recent memory and Seed Club context. Focus on beliefs, decision heuristics, and places where my view has changed. Flag what evidence supports each point.",
|
|
200
|
+
);
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
pi.registerCommand("theses", {
|
|
205
|
+
description: "Open an investment theses prompt",
|
|
206
|
+
handler: async (_args, ctx) => {
|
|
207
|
+
await prefillEditor(
|
|
208
|
+
ctx,
|
|
209
|
+
"Draft my current investment theses from Seed Club memory and recent deal context. Group by thesis, include supporting signals, counterexamples, and what would change my mind.",
|
|
210
|
+
);
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
pi.registerCommand("concerns", {
|
|
215
|
+
description: "Open an investment concerns prompt",
|
|
216
|
+
handler: async (_args, ctx) => {
|
|
217
|
+
await prefillEditor(
|
|
218
|
+
ctx,
|
|
219
|
+
"List my current recurring investment concerns from Seed Club memory and recent deal context. Group concerns by theme, name the pattern, cite representative context when available, and separate known concerns from guesses.",
|
|
220
|
+
);
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
|
|
107
224
|
pi.registerCommand("seedclub", {
|
|
108
225
|
description: "Seed Club",
|
|
109
226
|
handler: async (args, ctx) => {
|
|
@@ -136,6 +253,7 @@ export function registerSeedclubCommand(pi: ExtensionAPI, deps: SeedclubDeps) {
|
|
|
136
253
|
"Use local API/Auth",
|
|
137
254
|
"Use prod API/Auth",
|
|
138
255
|
"Connect personal calendar",
|
|
256
|
+
"Memory",
|
|
139
257
|
"Open CRM prompt",
|
|
140
258
|
"Open meetings prompt",
|
|
141
259
|
"Open transcripts prompt",
|
|
@@ -178,6 +296,10 @@ export function registerSeedclubCommand(pi: ExtensionAPI, deps: SeedclubDeps) {
|
|
|
178
296
|
case "Connect personal calendar":
|
|
179
297
|
await deps.connectCalendar(ctx);
|
|
180
298
|
break;
|
|
299
|
+
case "Memory":
|
|
300
|
+
if (deps.showMemoryMenu) await deps.showMemoryMenu(ctx);
|
|
301
|
+
else ctx.ui.notify("Memory controls are unavailable.", "warning");
|
|
302
|
+
break;
|
|
181
303
|
case "Open CRM prompt":
|
|
182
304
|
await new Promise((r) => setTimeout(r, 300));
|
|
183
305
|
ctx.ui.setEditorText("List CRM records for my workspace.");
|