@knowsuchagency/fulcrum 2.3.4 → 2.4.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/bin/fulcrum.js +3 -3
- package/package.json +1 -1
- package/server/index.js +34 -41
package/bin/fulcrum.js
CHANGED
|
@@ -45641,7 +45641,7 @@ async function runMcpServer(urlOverride, portOverride) {
|
|
|
45641
45641
|
const client = new FulcrumClient(urlOverride, portOverride);
|
|
45642
45642
|
const server = new McpServer({
|
|
45643
45643
|
name: "fulcrum",
|
|
45644
|
-
version: "2.
|
|
45644
|
+
version: "2.4.0"
|
|
45645
45645
|
});
|
|
45646
45646
|
registerTools(server, client);
|
|
45647
45647
|
const transport = new StdioServerTransport;
|
|
@@ -47990,7 +47990,7 @@ var marketplace_default = `{
|
|
|
47990
47990
|
"name": "fulcrum",
|
|
47991
47991
|
"source": "./",
|
|
47992
47992
|
"description": "Task orchestration for Claude Code",
|
|
47993
|
-
"version": "2.
|
|
47993
|
+
"version": "2.4.0",
|
|
47994
47994
|
"skills": [
|
|
47995
47995
|
"./skills/fulcrum"
|
|
47996
47996
|
],
|
|
@@ -49178,7 +49178,7 @@ function compareVersions(v1, v2) {
|
|
|
49178
49178
|
var package_default = {
|
|
49179
49179
|
name: "@knowsuchagency/fulcrum",
|
|
49180
49180
|
private: true,
|
|
49181
|
-
version: "2.
|
|
49181
|
+
version: "2.4.0",
|
|
49182
49182
|
description: "Harness Attention. Orchestrate Agents. Ship.",
|
|
49183
49183
|
license: "PolyForm-Perimeter-1.0.0",
|
|
49184
49184
|
type: "module",
|
package/package.json
CHANGED
package/server/index.js
CHANGED
|
@@ -71286,6 +71286,7 @@ function getSession(id) {
|
|
|
71286
71286
|
function listSessions(options) {
|
|
71287
71287
|
const { limit: limit2 = 50, offset = 0, projectId, search, favorites } = options;
|
|
71288
71288
|
const conditions2 = [];
|
|
71289
|
+
conditions2.push(or(isNull(chatSessions.connectionId), not(like(chatSessions.connectionId, "assistant-%"))));
|
|
71289
71290
|
if (projectId) {
|
|
71290
71291
|
conditions2.push(eq(chatSessions.projectId, projectId));
|
|
71291
71292
|
}
|
|
@@ -409568,6 +409569,27 @@ class EmailChannel {
|
|
|
409568
409569
|
this.connectionId = connectionId;
|
|
409569
409570
|
this.credentials = credentials ?? null;
|
|
409570
409571
|
}
|
|
409572
|
+
createImapClient() {
|
|
409573
|
+
if (!this.credentials)
|
|
409574
|
+
throw new Error("No credentials available");
|
|
409575
|
+
const client3 = new $ImapFlow({
|
|
409576
|
+
host: this.credentials.imap.host,
|
|
409577
|
+
port: this.credentials.imap.port,
|
|
409578
|
+
secure: this.credentials.imap.secure,
|
|
409579
|
+
auth: {
|
|
409580
|
+
user: this.credentials.imap.user,
|
|
409581
|
+
pass: this.credentials.imap.password
|
|
409582
|
+
},
|
|
409583
|
+
logger: false
|
|
409584
|
+
});
|
|
409585
|
+
client3.on("error", (err) => {
|
|
409586
|
+
log2.messaging.error("IMAP client error", {
|
|
409587
|
+
connectionId: this.connectionId,
|
|
409588
|
+
error: String(err)
|
|
409589
|
+
});
|
|
409590
|
+
});
|
|
409591
|
+
return client3;
|
|
409592
|
+
}
|
|
409571
409593
|
async initialize(events) {
|
|
409572
409594
|
this.events = events;
|
|
409573
409595
|
this.isShuttingDown = false;
|
|
@@ -409608,16 +409630,7 @@ class EmailChannel {
|
|
|
409608
409630
|
connectionId: this.connectionId,
|
|
409609
409631
|
host: this.credentials.smtp.host
|
|
409610
409632
|
});
|
|
409611
|
-
this.imapClient =
|
|
409612
|
-
host: this.credentials.imap.host,
|
|
409613
|
-
port: this.credentials.imap.port,
|
|
409614
|
-
secure: this.credentials.imap.secure,
|
|
409615
|
-
auth: {
|
|
409616
|
-
user: this.credentials.imap.user,
|
|
409617
|
-
pass: this.credentials.imap.password
|
|
409618
|
-
},
|
|
409619
|
-
logger: false
|
|
409620
|
-
});
|
|
409633
|
+
this.imapClient = this.createImapClient();
|
|
409621
409634
|
await this.imapClient.connect();
|
|
409622
409635
|
log2.messaging.info("IMAP connection established", {
|
|
409623
409636
|
connectionId: this.connectionId,
|
|
@@ -409654,16 +409667,7 @@ class EmailChannel {
|
|
|
409654
409667
|
if (this.isShuttingDown || !this.credentials)
|
|
409655
409668
|
return;
|
|
409656
409669
|
try {
|
|
409657
|
-
const client3 =
|
|
409658
|
-
host: this.credentials.imap.host,
|
|
409659
|
-
port: this.credentials.imap.port,
|
|
409660
|
-
secure: this.credentials.imap.secure,
|
|
409661
|
-
auth: {
|
|
409662
|
-
user: this.credentials.imap.user,
|
|
409663
|
-
pass: this.credentials.imap.password
|
|
409664
|
-
},
|
|
409665
|
-
logger: false
|
|
409666
|
-
});
|
|
409670
|
+
const client3 = this.createImapClient();
|
|
409667
409671
|
await client3.connect();
|
|
409668
409672
|
const lock = await client3.getMailboxLock("INBOX");
|
|
409669
409673
|
try {
|
|
@@ -409812,16 +409816,7 @@ class EmailChannel {
|
|
|
409812
409816
|
if (!this.credentials) {
|
|
409813
409817
|
throw new Error("Not connected - no credentials available");
|
|
409814
409818
|
}
|
|
409815
|
-
const client3 =
|
|
409816
|
-
host: this.credentials.imap.host,
|
|
409817
|
-
port: this.credentials.imap.port,
|
|
409818
|
-
secure: this.credentials.imap.secure,
|
|
409819
|
-
auth: {
|
|
409820
|
-
user: this.credentials.imap.user,
|
|
409821
|
-
pass: this.credentials.imap.password
|
|
409822
|
-
},
|
|
409823
|
-
logger: false
|
|
409824
|
-
});
|
|
409819
|
+
const client3 = this.createImapClient();
|
|
409825
409820
|
try {
|
|
409826
409821
|
await client3.connect();
|
|
409827
409822
|
const lock = await client3.getMailboxLock("INBOX");
|
|
@@ -409860,16 +409855,7 @@ class EmailChannel {
|
|
|
409860
409855
|
}
|
|
409861
409856
|
const limit2 = options?.limit ?? 50;
|
|
409862
409857
|
const uidsToFetch = uids.slice(0, limit2);
|
|
409863
|
-
const client3 =
|
|
409864
|
-
host: this.credentials.imap.host,
|
|
409865
|
-
port: this.credentials.imap.port,
|
|
409866
|
-
secure: this.credentials.imap.secure,
|
|
409867
|
-
auth: {
|
|
409868
|
-
user: this.credentials.imap.user,
|
|
409869
|
-
pass: this.credentials.imap.password
|
|
409870
|
-
},
|
|
409871
|
-
logger: false
|
|
409872
|
-
});
|
|
409858
|
+
const client3 = this.createImapClient();
|
|
409873
409859
|
const storedEmails = [];
|
|
409874
409860
|
try {
|
|
409875
409861
|
await client3.connect();
|
|
@@ -409952,6 +409938,7 @@ async function testEmailCredentials(credentials) {
|
|
|
409952
409938
|
},
|
|
409953
409939
|
logger: false
|
|
409954
409940
|
});
|
|
409941
|
+
client3.on("error", () => {});
|
|
409955
409942
|
await client3.connect();
|
|
409956
409943
|
await client3.logout();
|
|
409957
409944
|
} catch (err) {
|
|
@@ -410994,6 +410981,8 @@ If you create an actionable_event, set an appropriate status:
|
|
|
410994
410981
|
function getSweepSystemPrompt(context) {
|
|
410995
410982
|
return `## Hourly Sweep
|
|
410996
410983
|
|
|
410984
|
+
**This is a non-interactive background session. Do not ask questions or wait for user input.**
|
|
410985
|
+
|
|
410997
410986
|
You are performing your hourly sweep.
|
|
410998
410987
|
|
|
410999
410988
|
**Context:**
|
|
@@ -411032,6 +411021,8 @@ function getRitualSystemPrompt(type) {
|
|
|
411032
411021
|
if (type === "morning") {
|
|
411033
411022
|
return `## Morning Ritual
|
|
411034
411023
|
|
|
411024
|
+
**This is a non-interactive background session. Do not ask questions or wait for user input.**
|
|
411025
|
+
|
|
411035
411026
|
You are performing your morning ritual.
|
|
411036
411027
|
|
|
411037
411028
|
## Output Channels
|
|
@@ -411041,6 +411032,8 @@ Then use the \`message\` tool to send your briefing to the connected channels.`;
|
|
|
411041
411032
|
}
|
|
411042
411033
|
return `## Evening Ritual
|
|
411043
411034
|
|
|
411035
|
+
**This is a non-interactive background session. Do not ask questions or wait for user input.**
|
|
411036
|
+
|
|
411044
411037
|
You are performing your evening ritual.
|
|
411045
411038
|
|
|
411046
411039
|
## Output Channels
|
|
@@ -463732,7 +463725,7 @@ mcpRoutes.all("/", async (c) => {
|
|
|
463732
463725
|
});
|
|
463733
463726
|
const server = new McpServer({
|
|
463734
463727
|
name: "fulcrum",
|
|
463735
|
-
version: "2.
|
|
463728
|
+
version: "2.4.0"
|
|
463736
463729
|
});
|
|
463737
463730
|
const client = new FulcrumClient(`http://localhost:${port}`);
|
|
463738
463731
|
registerTools(server, client);
|