@alook/cli 0.0.129 → 0.0.131

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/dist/index.js CHANGED
@@ -14809,7 +14809,9 @@ var EmailNotifyRequestSchema = exports_external.object({
14809
14809
  attachments: exports_external.string().optional(),
14810
14810
  traceId: exports_external.string().optional(),
14811
14811
  sourceTaskId: exports_external.string().optional(),
14812
- isInternal: exports_external.boolean().optional().default(false)
14812
+ isInternal: exports_external.boolean().optional().default(false),
14813
+ senderConversationId: exports_external.string().optional(),
14814
+ senderAgentId: exports_external.string().optional()
14813
14815
  });
14814
14816
  var CreateEmailAccountSchema = exports_external.object({
14815
14817
  emailAddress: exports_external.string().email("valid email required"),
@@ -16507,6 +16509,7 @@ var conversation = sqliteTable("conversation", {
16507
16509
  index("idx_conversation_agent_lookup").on(t.workspaceId, t.agentId, t.userId, t.type, t.channel, t.createdAt),
16508
16510
  index("idx_conversation_ws_user").on(t.workspaceId, t.userId, t.createdAt),
16509
16511
  index("idx_conversation_thread").on(t.parentMessageId),
16512
+ unique("uq_conversation_parent_message").on(t.parentMessageId, t.workspaceId),
16510
16513
  foreignKey({
16511
16514
  columns: [t.agentId, t.workspaceId],
16512
16515
  foreignColumns: [agent.id, agent.workspaceId]
@@ -19594,17 +19597,14 @@ function createTimelineEntry(taskId, prompt, type, sessionId, pid, provider, con
19594
19597
  detailed_log: detailedLog ?? null
19595
19598
  };
19596
19599
  }
19597
- var RESUME_MAX_AGE_MS = 72 * 60 * 60 * 1000;
19598
19600
  function findResumableSessionByContextKey(timelineDir, contextKey, provider) {
19599
- const now = new Date;
19600
- const cutoff = new Date(now.getTime() - RESUME_MAX_AGE_MS);
19601
19601
  const entries = [];
19602
- for (const filename of recentFilenames(7)) {
19602
+ for (const filename of recentFilenames(90)) {
19603
19603
  entries.push(...readJsonl(join7(timelineDir, filename)));
19604
19604
  }
19605
19605
  entries.sort((a, b) => new Date(b.datetime).getTime() - new Date(a.datetime).getTime());
19606
19606
  for (const entry of entries) {
19607
- if (entry.status !== "running" && entry.context_key === contextKey && entry.provider === provider && entry.session_id && new Date(entry.datetime) >= cutoff) {
19607
+ if (entry.status !== "running" && entry.context_key === contextKey && entry.provider === provider && entry.session_id) {
19608
19608
  return entry.session_id;
19609
19609
  }
19610
19610
  }
@@ -19721,8 +19721,8 @@ function releaseSteeringLock(baseDir, contextKey) {
19721
19721
 
19722
19722
  // daemon/prompt.ts
19723
19723
  var DM_RESPONSE_NOTICE = "Reply with `alook sync send-dm` — that's the only thing the user sees; your task output and reasoning are not shown." + " Talk to them at milestones like a colleague would, and don't end your turn without sending what they need." + " If this task will take more than 30 seconds, send a quick ack first so the user knows you're on it.";
19724
- var EMAIL_NOTICE = "This task was triggered automatically by an incoming email. There is no human in this session." + " If you need to communicate with a human, you MUST send an email using the email sending tool." + " If you need more information or confirmation from the human, send them an email asking for it and then exit." + " Do not wait — when the human replies, a new task will be triggered automatically and you will be woken up with their response.";
19725
- var CALENDAR_NOTICE = "This task was triggered by a scheduled calendar event. There is no human in this session." + " If you need to communicate with a human, you MUST send an email using the email sending tool." + " If you need more information or confirmation, send an email asking for it and then exit." + " Do not wait — when the human replies, a new task will be triggered automatically and you will be woken up with their response.";
19724
+ var EMAIL_NOTICE = "This task was triggered by an incoming email. Reply to the sender via email use the email sending tool to respond." + " If you need more information or confirmation, email them and then exit." + " Do not wait — when they reply, a new task will be triggered automatically and you will be woken up with their response.";
19725
+ var CALENDAR_NOTICE = "This task was triggered by a scheduled calendar event." + " If you need to communicate with someone, send an email using the email sending tool." + " If you need more information or confirmation, email them and then exit." + " Do not wait — when they reply, a new task will be triggered automatically and you will be woken up with their response.";
19726
19726
  var ISSUE_NOTICE = "This task was triggered by an assigned issue. The issue_id is provided in this message." + " Use `alook issue show --issue_id <issue_id>` to read full context." + " Use `alook issue update --issue_id <issue_id> --status <status>` to change status." + " Use `alook issue comment --issue_id <issue_id> --body <text>` to leave a comment." + " CRITICAL — You MUST manage the issue status correctly. This is NOT optional:" + " 1. Set status to 'in_progress' when you start working." + " 2. If you complete the work yourself: leave a summary comment, then set status to 'review' as your last action. 'review' means there is actual completed work (code, artifact, result) ready for the owner to look at." + " 3. If you delegated work to colleagues and are waiting for their response: KEEP status as 'in_progress' and exit. This is expected — you will be woken up when they reply. Set 'review' only after all delegated work is confirmed complete." + " 4. NEVER set 'review' unless there is concrete completed work for the owner to review. Sending a plan to a colleague is NOT completed work." + " NEVER exit without doing at least one of: updating the status, or leaving a comment explaining what you did and what you're waiting for.";
19727
19727
  function buildDmNotice(name, email3) {
19728
19728
  return `This task was triggered by an incoming email on a conversation with ${name} (${email3}).` + ` ${name} is present in this session — reply to them directly.` + ` If you need to communicate with anyone else, use the email sending tool.`;
@@ -681,7 +681,6 @@ function createTimelineEntry(taskId, prompt, type, sessionId, pid, provider, con
681
681
  detailed_log: detailedLog ?? null
682
682
  };
683
683
  }
684
- var RESUME_MAX_AGE_MS = 72 * 60 * 60 * 1000;
685
684
 
686
685
  // daemon/meeting-runner.ts
687
686
  var log3 = createLogger({ module: "meeting-runner" });
@@ -14720,7 +14720,9 @@ var EmailNotifyRequestSchema = exports_external.object({
14720
14720
  attachments: exports_external.string().optional(),
14721
14721
  traceId: exports_external.string().optional(),
14722
14722
  sourceTaskId: exports_external.string().optional(),
14723
- isInternal: exports_external.boolean().optional().default(false)
14723
+ isInternal: exports_external.boolean().optional().default(false),
14724
+ senderConversationId: exports_external.string().optional(),
14725
+ senderAgentId: exports_external.string().optional()
14724
14726
  });
14725
14727
  var CreateEmailAccountSchema = exports_external.object({
14726
14728
  emailAddress: exports_external.string().email("valid email required"),
@@ -16418,6 +16420,7 @@ var conversation = sqliteTable("conversation", {
16418
16420
  index("idx_conversation_agent_lookup").on(t.workspaceId, t.agentId, t.userId, t.type, t.channel, t.createdAt),
16419
16421
  index("idx_conversation_ws_user").on(t.workspaceId, t.userId, t.createdAt),
16420
16422
  index("idx_conversation_thread").on(t.parentMessageId),
16423
+ unique("uq_conversation_parent_message").on(t.parentMessageId, t.workspaceId),
16421
16424
  foreignKey({
16422
16425
  columns: [t.agentId, t.workspaceId],
16423
16426
  foreignColumns: [agent.id, agent.workspaceId]
@@ -18796,17 +18799,14 @@ function createTimelineEntry(taskId, prompt, type, sessionId, pid, provider, con
18796
18799
  detailed_log: detailedLog ?? null
18797
18800
  };
18798
18801
  }
18799
- var RESUME_MAX_AGE_MS = 72 * 60 * 60 * 1000;
18800
18802
  function findResumableSessionByContextKey(timelineDir, contextKey, provider) {
18801
- const now = new Date;
18802
- const cutoff = new Date(now.getTime() - RESUME_MAX_AGE_MS);
18803
18803
  const entries = [];
18804
- for (const filename of recentFilenames(7)) {
18804
+ for (const filename of recentFilenames(90)) {
18805
18805
  entries.push(...readJsonl(join4(timelineDir, filename)));
18806
18806
  }
18807
18807
  entries.sort((a, b) => new Date(b.datetime).getTime() - new Date(a.datetime).getTime());
18808
18808
  for (const entry of entries) {
18809
- if (entry.status !== "running" && entry.context_key === contextKey && entry.provider === provider && entry.session_id && new Date(entry.datetime) >= cutoff) {
18809
+ if (entry.status !== "running" && entry.context_key === contextKey && entry.provider === provider && entry.session_id) {
18810
18810
  return entry.session_id;
18811
18811
  }
18812
18812
  }
@@ -18840,8 +18840,8 @@ function clearKillIntent(baseDir, taskId) {
18840
18840
 
18841
18841
  // daemon/prompt.ts
18842
18842
  var DM_RESPONSE_NOTICE = "Reply with `alook sync send-dm` — that's the only thing the user sees; your task output and reasoning are not shown." + " Talk to them at milestones like a colleague would, and don't end your turn without sending what they need." + " If this task will take more than 30 seconds, send a quick ack first so the user knows you're on it.";
18843
- var EMAIL_NOTICE = "This task was triggered automatically by an incoming email. There is no human in this session." + " If you need to communicate with a human, you MUST send an email using the email sending tool." + " If you need more information or confirmation from the human, send them an email asking for it and then exit." + " Do not wait — when the human replies, a new task will be triggered automatically and you will be woken up with their response.";
18844
- var CALENDAR_NOTICE = "This task was triggered by a scheduled calendar event. There is no human in this session." + " If you need to communicate with a human, you MUST send an email using the email sending tool." + " If you need more information or confirmation, send an email asking for it and then exit." + " Do not wait — when the human replies, a new task will be triggered automatically and you will be woken up with their response.";
18843
+ var EMAIL_NOTICE = "This task was triggered by an incoming email. Reply to the sender via email use the email sending tool to respond." + " If you need more information or confirmation, email them and then exit." + " Do not wait — when they reply, a new task will be triggered automatically and you will be woken up with their response.";
18844
+ var CALENDAR_NOTICE = "This task was triggered by a scheduled calendar event." + " If you need to communicate with someone, send an email using the email sending tool." + " If you need more information or confirmation, email them and then exit." + " Do not wait — when they reply, a new task will be triggered automatically and you will be woken up with their response.";
18845
18845
  var ISSUE_NOTICE = "This task was triggered by an assigned issue. The issue_id is provided in this message." + " Use `alook issue show --issue_id <issue_id>` to read full context." + " Use `alook issue update --issue_id <issue_id> --status <status>` to change status." + " Use `alook issue comment --issue_id <issue_id> --body <text>` to leave a comment." + " CRITICAL — You MUST manage the issue status correctly. This is NOT optional:" + " 1. Set status to 'in_progress' when you start working." + " 2. If you complete the work yourself: leave a summary comment, then set status to 'review' as your last action. 'review' means there is actual completed work (code, artifact, result) ready for the owner to look at." + " 3. If you delegated work to colleagues and are waiting for their response: KEEP status as 'in_progress' and exit. This is expected — you will be woken up when they reply. Set 'review' only after all delegated work is confirmed complete." + " 4. NEVER set 'review' unless there is concrete completed work for the owner to review. Sending a plan to a colleague is NOT completed work." + " NEVER exit without doing at least one of: updating the status, or leaving a comment explaining what you did and what you're waiting for.";
18846
18846
  function buildDmNotice(name, email3) {
18847
18847
  return `This task was triggered by an incoming email on a conversation with ${name} (${email3}).` + ` ${name} is present in this session — reply to them directly.` + ` If you need to communicate with anyone else, use the email sending tool.`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alook/cli",
3
- "version": "0.0.129",
3
+ "version": "0.0.131",
4
4
  "description": "Alook CLI — Enable Your Person Colleague",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/alookai/alook#readme",