@clubnet/seedclub 0.2.22 → 0.2.23
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/assets/extensions/seedclub/branding.ts +16 -16
- package/assets/extensions/seedclub/commands/transcript-intent.ts +338 -129
- package/assets/extensions/seedclub/commands/transcripts.ts +1 -3
- package/assets/extensions/seedclub/tool-utils.ts +74 -0
- package/assets/extensions/seedclub/tools/crm.ts +35 -1
- package/assets/extensions/seedclub/tools/media.ts +121 -6
- package/assets/extensions/seedclub/tools/meetings.ts +80 -6
- package/assets/extensions/seedclub/tools/utility.ts +12 -1
- package/assets/extensions/seedclub-ui/index.ts +2 -0
- package/assets/extensions/seedclub-ui/tool-progress.ts +39 -0
- package/assets/extensions/seedclub-ui/welcome.ts +23 -2
- package/assets/theme/dark.json +1 -1
- package/assets/theme/light.json +1 -1
- package/bin/cli.js +2 -2
- package/bin/pi-main-launcher.js +20 -6
- package/package.json +1 -1
|
@@ -3,8 +3,8 @@ import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
|
3
3
|
const BRANDING_INSTRUCTIONS = `
|
|
4
4
|
IMPORTANT BRANDING RULES:
|
|
5
5
|
- Always refer to the product as Seed Club.
|
|
6
|
-
- Never mention the name
|
|
7
|
-
- If the user mentions
|
|
6
|
+
- Never mention the name "pi" in any response.
|
|
7
|
+
- If the user mentions "pi", interpret it as Seed Club and respond using "Seed Club".
|
|
8
8
|
- When summarizing intent or describing the system, use Seed Club wording only.
|
|
9
9
|
|
|
10
10
|
IMPORTANT SEED CLUB API ROUTING:
|
|
@@ -15,7 +15,7 @@ IMPORTANT SEED CLUB API ROUTING:
|
|
|
15
15
|
- If the user asks for "all transcripts" and the tool returns a limited page, summarize the returned transcript rows and say you can fetch full text for selected rows. Do not claim exhaustive coverage unless the API result proves it.
|
|
16
16
|
- Use includeFullText only after narrowing to rows the user wants to inspect.
|
|
17
17
|
- Use seedclub_list_program_media_assets(assetKind=full_conversation) only when the user asks for full conversations or media assets. Do not use it as the default source for transcript inventory.
|
|
18
|
-
- For transcript retrieval asks (e.g., "I need transcripts...", "get transcripts...", guest/date transcript pulls), first use chat and metadata tools to establish exact constraints when needed, then call seedclub_export_transcripts with the user's original request.
|
|
18
|
+
- For transcript retrieval asks (e.g., "I need transcripts...", "get transcripts...", guest/date transcript pulls), first use chat and metadata tools to establish exact constraints when needed, then call seedclub_export_transcripts with the user's original request. Prefer this single export tool path over chaining high-payload media tools.
|
|
19
19
|
- Treat short transcript artifact prompts like "today's transcripts", "2pm transcripts", "Tuesday VTTs", or "recent captions" as local transcript export tool requests, not inline transcript display requests.
|
|
20
20
|
- Do not paste full transcript JSON or raw session context into the reply unless the user explicitly asks for raw data.
|
|
21
21
|
- Use seedclub_list_show_recordings for show recording URLs, then follow transcript event_date only when needed.
|
|
@@ -23,30 +23,30 @@ IMPORTANT SEED CLUB API ROUTING:
|
|
|
23
23
|
|
|
24
24
|
const BRAND_REGEX = /\bpi\b/gi;
|
|
25
25
|
|
|
26
|
+
const EXTERNAL_RESEARCH_INSTRUCTIONS = `
|
|
27
|
+
EXTERNAL RESEARCH ROUTING:
|
|
28
|
+
- Seed Club runs in a general-purpose coding harness with shell tools.
|
|
29
|
+
- 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.
|
|
30
|
+
- Use shell tools (e.g., curl via bash) to gather at least 2 reputable sources, then answer with a concise synthesis.
|
|
31
|
+
- Include source URLs inline so the user can verify.
|
|
32
|
+
- If the user explicitly scopes to Seed Club records (transcripts, meetings, CRM, media), prioritize Seed Club tools first.
|
|
33
|
+
`;
|
|
34
|
+
|
|
26
35
|
function replaceBranding(text: string): string {
|
|
27
36
|
return text.replace(BRAND_REGEX, "Seed Club");
|
|
28
37
|
}
|
|
29
38
|
|
|
30
|
-
export default function registerBrandingGuard(
|
|
31
|
-
|
|
39
|
+
export default function registerBrandingGuard(seedClub: ExtensionAPI) {
|
|
40
|
+
seedClub.on("before_agent_start", async (event) => {
|
|
32
41
|
return {
|
|
33
|
-
systemPrompt: `${event.systemPrompt}\n${BRANDING_INSTRUCTIONS}`,
|
|
42
|
+
systemPrompt: `${event.systemPrompt}\n${BRANDING_INSTRUCTIONS}\n${EXTERNAL_RESEARCH_INSTRUCTIONS}`,
|
|
34
43
|
};
|
|
35
44
|
});
|
|
36
45
|
|
|
37
|
-
|
|
46
|
+
seedClub.on("input", async (event) => {
|
|
38
47
|
if (event.source === "extension") return { action: "continue" };
|
|
39
48
|
const nextText = replaceBranding(event.text);
|
|
40
49
|
if (nextText !== event.text) return { action: "transform", text: nextText };
|
|
41
50
|
return { action: "continue" };
|
|
42
51
|
});
|
|
43
|
-
|
|
44
|
-
pi.on("tool_result", async (event) => {
|
|
45
|
-
const nextContent = event.content.map((item) => {
|
|
46
|
-
if (item.type !== "text") return item;
|
|
47
|
-
const nextText = replaceBranding(item.text);
|
|
48
|
-
return nextText === item.text ? item : { ...item, text: nextText };
|
|
49
|
-
});
|
|
50
|
-
return { content: nextContent };
|
|
51
|
-
});
|
|
52
52
|
}
|