@telora/daemon 0.19.7 → 0.19.14

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.
Files changed (90) hide show
  1. package/build-info.json +8 -3
  2. package/dist/audit-phase.d.ts +8 -0
  3. package/dist/audit-phase.d.ts.map +1 -1
  4. package/dist/audit-phase.js +47 -0
  5. package/dist/audit-phase.js.map +1 -1
  6. package/dist/completion/status-advance-phase.d.ts.map +1 -1
  7. package/dist/completion/status-advance-phase.js +35 -1
  8. package/dist/completion/status-advance-phase.js.map +1 -1
  9. package/dist/completion/team-completion.d.ts.map +1 -1
  10. package/dist/completion/team-completion.js +24 -0
  11. package/dist/completion/team-completion.js.map +1 -1
  12. package/dist/context-audit.d.ts +68 -0
  13. package/dist/context-audit.d.ts.map +1 -0
  14. package/dist/context-audit.js +64 -0
  15. package/dist/context-audit.js.map +1 -0
  16. package/dist/context-lock.d.ts +129 -0
  17. package/dist/context-lock.d.ts.map +1 -0
  18. package/dist/context-lock.js +143 -0
  19. package/dist/context-lock.js.map +1 -0
  20. package/dist/focus-executor.js +1 -1
  21. package/dist/focus-executor.js.map +1 -1
  22. package/dist/focus-phase.d.ts +24 -0
  23. package/dist/focus-phase.d.ts.map +1 -1
  24. package/dist/focus-phase.js +30 -0
  25. package/dist/focus-phase.js.map +1 -1
  26. package/dist/git-merge-strategies.d.ts +10 -0
  27. package/dist/git-merge-strategies.d.ts.map +1 -1
  28. package/dist/git-merge-strategies.js +10 -0
  29. package/dist/git-merge-strategies.js.map +1 -1
  30. package/dist/listener-auto-advance.d.ts +39 -0
  31. package/dist/listener-auto-advance.d.ts.map +1 -1
  32. package/dist/listener-auto-advance.js +88 -0
  33. package/dist/listener-auto-advance.js.map +1 -1
  34. package/dist/listener.d.ts.map +1 -1
  35. package/dist/listener.js +6 -1
  36. package/dist/listener.js.map +1 -1
  37. package/dist/loop-context-audit-pass.d.ts +89 -0
  38. package/dist/loop-context-audit-pass.d.ts.map +1 -0
  39. package/dist/loop-context-audit-pass.js +199 -0
  40. package/dist/loop-context-audit-pass.js.map +1 -0
  41. package/dist/loop-engine.d.ts.map +1 -1
  42. package/dist/loop-engine.js +14 -0
  43. package/dist/loop-engine.js.map +1 -1
  44. package/dist/loop-variance.d.ts +9 -0
  45. package/dist/loop-variance.d.ts.map +1 -1
  46. package/dist/loop-variance.js +35 -0
  47. package/dist/loop-variance.js.map +1 -1
  48. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  49. package/dist/prompt-sections/execution-sections.js +26 -0
  50. package/dist/prompt-sections/execution-sections.js.map +1 -1
  51. package/dist/queries/context-lock-queries.d.ts +44 -0
  52. package/dist/queries/context-lock-queries.d.ts.map +1 -0
  53. package/dist/queries/context-lock-queries.js +74 -0
  54. package/dist/queries/context-lock-queries.js.map +1 -0
  55. package/dist/queries/embedding-config.d.ts +52 -0
  56. package/dist/queries/embedding-config.d.ts.map +1 -0
  57. package/dist/queries/embedding-config.js +59 -0
  58. package/dist/queries/embedding-config.js.map +1 -0
  59. package/dist/queries/index.d.ts +8 -0
  60. package/dist/queries/index.d.ts.map +1 -1
  61. package/dist/queries/index.js +4 -0
  62. package/dist/queries/index.js.map +1 -1
  63. package/dist/queries/loop-anchor.d.ts +44 -0
  64. package/dist/queries/loop-anchor.d.ts.map +1 -0
  65. package/dist/queries/loop-anchor.js +54 -0
  66. package/dist/queries/loop-anchor.js.map +1 -0
  67. package/dist/queries/loop-document-neighbors.d.ts +38 -0
  68. package/dist/queries/loop-document-neighbors.d.ts.map +1 -0
  69. package/dist/queries/loop-document-neighbors.js +38 -0
  70. package/dist/queries/loop-document-neighbors.js.map +1 -0
  71. package/dist/queries/schemas.d.ts +54 -0
  72. package/dist/queries/schemas.d.ts.map +1 -1
  73. package/dist/queries/schemas.js +46 -0
  74. package/dist/queries/schemas.js.map +1 -1
  75. package/dist/reality-pole-capture.d.ts +66 -0
  76. package/dist/reality-pole-capture.d.ts.map +1 -0
  77. package/dist/reality-pole-capture.js +111 -0
  78. package/dist/reality-pole-capture.js.map +1 -0
  79. package/dist/reality-pole.d.ts +62 -0
  80. package/dist/reality-pole.d.ts.map +1 -0
  81. package/dist/reality-pole.js +90 -0
  82. package/dist/reality-pole.js.map +1 -0
  83. package/dist/resolvers/loop-context.d.ts +9 -0
  84. package/dist/resolvers/loop-context.d.ts.map +1 -1
  85. package/dist/resolvers/loop-context.js +41 -5
  86. package/dist/resolvers/loop-context.js.map +1 -1
  87. package/dist/team-prompt-base.d.ts.map +1 -1
  88. package/dist/team-prompt-base.js +1 -0
  89. package/dist/team-prompt-base.js.map +1 -1
  90. package/package.json +2 -2
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Reality pole: a loop-context item's anchor to the DURABLE CODE STRUCTURE it
3
+ * touches (the files a delivery changed) plus an embedding of that footprint.
4
+ *
5
+ * Embeddings here measure ABOUTNESS, not agreement: the reality pole is the
6
+ * code an item is about, used to compute topical DISTANCE (a drift tripwire),
7
+ * never a truth oracle. Two items pointing at the same files are "near" in this
8
+ * space whether or not they agree.
9
+ *
10
+ * The daemon has NO direct Supabase client and NO access to the embedding API
11
+ * key. So this module computes the git footprint locally and hands it to ONE
12
+ * edge action (daemon_loop_anchor_upsert) that upserts the anchor, embeds the
13
+ * footprint edge-side, and stores the vector. The daemon NEVER embeds directly.
14
+ */
15
+ import { callApi as defaultCallApi } from './queries/shared.js';
16
+ /** A loop-context item type that can carry a reality anchor. */
17
+ export type AnchorItemType = 'document' | 'answer';
18
+ /**
19
+ * Build the embed input string from a footprint's file paths.
20
+ *
21
+ * PURE -- no IO. Deterministic: the paths are de-duplicated, sorted, and
22
+ * newline-joined so the same footprint always yields the same input (and thus
23
+ * the same reality-pole embedding). Capped to a sane length.
24
+ *
25
+ * The embedding of this string is the reality pole -- a measure of what code
26
+ * the item is ABOUT, for distance/drift, not a measure of correctness.
27
+ */
28
+ export declare function footprintToEmbedInput(files: string[]): string;
29
+ /**
30
+ * Get the changed files on the delivery branch vs the base branch.
31
+ *
32
+ * Runs `git diff --name-only <baseBranch>...HEAD` in the worktree (the merge-base
33
+ * three-dot form, mirroring getGitDiff in resolvers/shared/git-diff.ts) and
34
+ * returns the changed file paths. Returns [] on any git failure -- NEVER throws.
35
+ */
36
+ export declare function getDeliveryFootprint(worktreePath: string, baseBranch: string): string[];
37
+ export interface WriteRealityAnchorArgs {
38
+ organizationId: string;
39
+ itemType: AnchorItemType;
40
+ itemId: string;
41
+ files: string[];
42
+ sourceDeliveryId?: string;
43
+ }
44
+ export interface WriteRealityAnchorOptions {
45
+ /** Injectable API caller (for tests). Defaults to the real `callApi`. */
46
+ callApi?: typeof defaultCallApi;
47
+ }
48
+ export interface WriteRealityAnchorResult {
49
+ anchorId: string | null;
50
+ embedded: boolean;
51
+ }
52
+ /**
53
+ * Write a loop-context item's reality anchor through the edge action.
54
+ *
55
+ * Builds the embed input from the footprint (footprintToEmbedInput) and calls
56
+ * daemon_loop_anchor_upsert, which upserts the anchor row AND embeds the
57
+ * footprint edge-side. Fail-open: on ANY error returns
58
+ * { anchorId: null, embedded: false } rather than throwing -- a missing anchor
59
+ * degrades the churn-clock signal, it never wedges the caller.
60
+ */
61
+ export declare function writeRealityAnchor(args: WriteRealityAnchorArgs, opts?: WriteRealityAnchorOptions): Promise<WriteRealityAnchorResult>;
62
+ //# sourceMappingURL=reality-pole.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reality-pole.d.ts","sourceRoot":"","sources":["../src/reality-pole.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AASnD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAa7D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAcvF;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAWD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,EAC5B,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAqBnC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Reality pole: a loop-context item's anchor to the DURABLE CODE STRUCTURE it
3
+ * touches (the files a delivery changed) plus an embedding of that footprint.
4
+ *
5
+ * Embeddings here measure ABOUTNESS, not agreement: the reality pole is the
6
+ * code an item is about, used to compute topical DISTANCE (a drift tripwire),
7
+ * never a truth oracle. Two items pointing at the same files are "near" in this
8
+ * space whether or not they agree.
9
+ *
10
+ * The daemon has NO direct Supabase client and NO access to the embedding API
11
+ * key. So this module computes the git footprint locally and hands it to ONE
12
+ * edge action (daemon_loop_anchor_upsert) that upserts the anchor, embeds the
13
+ * footprint edge-side, and stores the vector. The daemon NEVER embeds directly.
14
+ */
15
+ import { runGitSync } from './git-types.js';
16
+ import { callApi as defaultCallApi } from './queries/shared.js';
17
+ /**
18
+ * Cap on the embed input length. The footprint is file paths, not file
19
+ * contents, so this is generous -- it only guards against a pathological
20
+ * delivery touching thousands of files.
21
+ */
22
+ const EMBED_INPUT_CHAR_LIMIT = 20000;
23
+ /**
24
+ * Build the embed input string from a footprint's file paths.
25
+ *
26
+ * PURE -- no IO. Deterministic: the paths are de-duplicated, sorted, and
27
+ * newline-joined so the same footprint always yields the same input (and thus
28
+ * the same reality-pole embedding). Capped to a sane length.
29
+ *
30
+ * The embedding of this string is the reality pole -- a measure of what code
31
+ * the item is ABOUT, for distance/drift, not a measure of correctness.
32
+ */
33
+ export function footprintToEmbedInput(files) {
34
+ const unique = Array.from(new Set(files
35
+ .filter((f) => typeof f === 'string')
36
+ .map((f) => f.trim())
37
+ .filter((f) => f.length > 0))).sort();
38
+ const joined = unique.join('\n');
39
+ return joined.length <= EMBED_INPUT_CHAR_LIMIT
40
+ ? joined
41
+ : joined.slice(0, EMBED_INPUT_CHAR_LIMIT);
42
+ }
43
+ /**
44
+ * Get the changed files on the delivery branch vs the base branch.
45
+ *
46
+ * Runs `git diff --name-only <baseBranch>...HEAD` in the worktree (the merge-base
47
+ * three-dot form, mirroring getGitDiff in resolvers/shared/git-diff.ts) and
48
+ * returns the changed file paths. Returns [] on any git failure -- NEVER throws.
49
+ */
50
+ export function getDeliveryFootprint(worktreePath, baseBranch) {
51
+ const result = runGitSync(['diff', '--name-only', `${baseBranch}...HEAD`], worktreePath, { timeoutMs: 30_000 });
52
+ if (!result.success) {
53
+ console.warn(`[reality-pole] getDeliveryFootprint failed: ${result.error}`);
54
+ return [];
55
+ }
56
+ return result.output
57
+ .split('\n')
58
+ .map((line) => line.trim())
59
+ .filter((line) => line.length > 0);
60
+ }
61
+ /**
62
+ * Write a loop-context item's reality anchor through the edge action.
63
+ *
64
+ * Builds the embed input from the footprint (footprintToEmbedInput) and calls
65
+ * daemon_loop_anchor_upsert, which upserts the anchor row AND embeds the
66
+ * footprint edge-side. Fail-open: on ANY error returns
67
+ * { anchorId: null, embedded: false } rather than throwing -- a missing anchor
68
+ * degrades the churn-clock signal, it never wedges the caller.
69
+ */
70
+ export async function writeRealityAnchor(args, opts = {}) {
71
+ const call = opts.callApi ?? defaultCallApi;
72
+ try {
73
+ const result = await call('daemon_loop_anchor_upsert', {
74
+ itemType: args.itemType,
75
+ itemId: args.itemId,
76
+ files: args.files,
77
+ sourceDeliveryId: args.sourceDeliveryId ?? null,
78
+ embedText: footprintToEmbedInput(args.files),
79
+ });
80
+ return {
81
+ anchorId: typeof result.anchorId === 'string' ? result.anchorId : null,
82
+ embedded: result.embedded === true,
83
+ };
84
+ }
85
+ catch (err) {
86
+ console.warn(`[reality-pole] writeRealityAnchor failed for ${args.itemType} ${args.itemId}:`, err instanceof Error ? err.message : String(err));
87
+ return { anchorId: null, embedded: false };
88
+ }
89
+ }
90
+ //# sourceMappingURL=reality-pole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reality-pole.js","sourceRoot":"","sources":["../src/reality-pole.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Reorder documents by a semantic-rank id ordering. Documents whose id appears
3
+ * in `rankedIds` are ordered by that rank; documents absent from the ranking
4
+ * (no text/embedding match) keep their original relative order AFTER the ranked
5
+ * ones (sort_order is the floor). Pure -- exported for tests.
6
+ */
7
+ export declare function reorderDocsByRank<T extends {
8
+ id: string;
9
+ }>(docs: T[], rankedIds: string[]): T[];
1
10
  /**
2
11
  * loop.context
3
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"loop-context.d.ts","sourceRoot":"","sources":["../../src/resolvers/loop-context.ts"],"names":[],"mappings":"AA8FA;;;;;;;;;;;;;;;GAeG;AACH,oGAAoG;AACpG,wBAAgB,2BAA2B,IAAI,IAAI,CAyBlD"}
1
+ {"version":3,"file":"loop-context.d.ts","sourceRoot":"","sources":["../../src/resolvers/loop-context.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACxD,IAAI,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,MAAM,EAAE,GAClB,CAAC,EAAE,CAQL;AA0GD;;;;;;;;;;;;;;;GAeG;AACH,oGAAoG;AACpG,wBAAgB,2BAA2B,IAAI,IAAI,CA4BlD"}
@@ -1,10 +1,23 @@
1
1
  import { registerSourceResolver } from '../assembly-engine.js';
2
2
  import { callApi } from '../queries/shared.js';
3
+ /**
4
+ * Reorder documents by a semantic-rank id ordering. Documents whose id appears
5
+ * in `rankedIds` are ordered by that rank; documents absent from the ranking
6
+ * (no text/embedding match) keep their original relative order AFTER the ranked
7
+ * ones (sort_order is the floor). Pure -- exported for tests.
8
+ */
9
+ export function reorderDocsByRank(docs, rankedIds) {
10
+ if (rankedIds.length === 0)
11
+ return docs;
12
+ const rankOf = new Map(rankedIds.map((id, i) => [id, i]));
13
+ return [...docs].sort((a, b) => (rankOf.get(a.id) ?? Number.MAX_SAFE_INTEGER) -
14
+ (rankOf.get(b.id) ?? Number.MAX_SAFE_INTEGER));
15
+ }
3
16
  /**
4
17
  * Fetch loop data (persona + documents + Q&A) for a single layer.
5
18
  * Returns formatted markdown sections, or empty string if no data exists.
6
19
  */
7
- async function fetchLoopLayerContext(entityType, entityId, layerLabel) {
20
+ async function fetchLoopLayerContext(entityType, entityId, layerLabel, query) {
8
21
  const parts = [];
9
22
  // Persona
10
23
  try {
@@ -19,7 +32,11 @@ async function fetchLoopLayerContext(entityType, entityId, layerLabel) {
19
32
  catch {
20
33
  // No persona -- not an error
21
34
  }
22
- // Force-ranked documents
35
+ // Documents. By default these are force-ranked by sort_order. When a relevance
36
+ // query is supplied, we reorder the SAME full documents by semantic similarity
37
+ // (loop_document_search blends text rank + cosine over the embedding). The
38
+ // sort_order order is preserved as the floor: if search fails or returns
39
+ // nothing, or for documents the search did not rank, we keep sort_order.
23
40
  try {
24
41
  const docsResult = await callApi('loop_document_list', {
25
42
  entityType,
@@ -27,8 +44,24 @@ async function fetchLoopLayerContext(entityType, entityId, layerLabel) {
27
44
  detail: 'full',
28
45
  limit: 50,
29
46
  });
30
- if (docsResult.items?.length > 0) {
31
- const docLines = docsResult.items.map((doc, i) => `#### ${i + 1}. ${doc.title}\n\n${doc.content}`);
47
+ let docs = docsResult.items ?? [];
48
+ const trimmedQuery = query?.trim();
49
+ if (trimmedQuery && docs.length > 1) {
50
+ try {
51
+ const search = await callApi('loop_document_search', {
52
+ entityType,
53
+ entityId,
54
+ query: trimmedQuery,
55
+ limit: docs.length,
56
+ });
57
+ docs = reorderDocsByRank(docs, search.items.map((it) => it.id));
58
+ }
59
+ catch {
60
+ // Search unavailable -- keep sort_order ordering.
61
+ }
62
+ }
63
+ if (docs.length > 0) {
64
+ const docLines = docs.map((doc, i) => `#### ${i + 1}. ${doc.title}\n\n${doc.content}`);
32
65
  parts.push(`### Documents\n\n${docLines.join('\n\n')}`);
33
66
  }
34
67
  }
@@ -96,6 +129,9 @@ async function fetchLoopLayerContext(entityType, entityId, layerLabel) {
96
129
  export function registerLoopContextResolver() {
97
130
  registerSourceResolver('loop.context', async (context, params) => {
98
131
  const layerFilter = params.layer;
132
+ // Optional relevance query: when present, documents are reordered by semantic
133
+ // similarity instead of sort_order alone (sort_order remains the fallback).
134
+ const query = params.query;
99
135
  const layers = [];
100
136
  if (!layerFilter || layerFilter === 'product') {
101
137
  layers.push({ entityType: 'product', entityId: context.productId, label: 'Product' });
@@ -106,7 +142,7 @@ export function registerLoopContextResolver() {
106
142
  if (!layerFilter || layerFilter === 'delivery') {
107
143
  layers.push({ entityType: 'delivery', entityId: context.productId, label: 'Delivery' });
108
144
  }
109
- const sections = await Promise.all(layers.map(l => fetchLoopLayerContext(l.entityType, l.entityId, l.label)));
145
+ const sections = await Promise.all(layers.map(l => fetchLoopLayerContext(l.entityType, l.entityId, l.label, query)));
110
146
  const nonEmpty = sections.filter(s => s.trim());
111
147
  if (nonEmpty.length === 0)
112
148
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"loop-context.js","sourceRoot":"","sources":["../../src/resolvers/loop-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-context.js","sourceRoot":"","sources":["../../src/resolvers/loop-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"team-prompt-base.d.ts","sourceRoot":"","sources":["../src/team-prompt-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,YAAY,EACV,gCAAgC,EAChC,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,uCAAuC,CAAC;AAU/C,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,EAC7B,iCAAiC,EACjC,8BAA8B,EAC9B,4BAA4B,EAC5B,oCAAoC,EACpC,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AAkBjD,OAAO,EACL,gCAAgC,EAChC,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAC/B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAWhF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAgCR;AAMD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAqCR"}
1
+ {"version":3,"file":"team-prompt-base.d.ts","sourceRoot":"","sources":["../src/team-prompt-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,YAAY,EACV,gCAAgC,EAChC,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,uCAAuC,CAAC;AAU/C,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,6BAA6B,EAC7B,iCAAiC,EACjC,8BAA8B,EAC9B,4BAA4B,EAC5B,oCAAoC,EACpC,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AAkBjD,OAAO,EACL,gCAAgC,EAChC,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAC/B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAWhF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAgCR;AAMD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAsCR"}
@@ -95,6 +95,7 @@ export function buildFocusTeamPrompt(role, context) {
95
95
  buildDeliveryListingSection(context.deliveries, context.issues),
96
96
  buildStatusUpdateRulesSection(),
97
97
  buildExecutionInstructionsSection(context.productId),
98
+ buildSessionConstraintsSection(),
98
99
  buildWorkerManagementSection(context.executionConfig.maxWorkers, context.engineId),
99
100
  buildDeliveryStageProgressionSection(),
100
101
  buildScopingMandateSection(),
@@ -1 +1 @@
1
- {"version":3,"file":"team-prompt-base.js","sourceRoot":"","sources":["../src/team-prompt-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-prompt-base.js","sourceRoot":"","sources":["../src/team-prompt-base.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/daemon",
3
- "version": "0.19.7",
3
+ "version": "0.19.14",
4
4
  "description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
5
5
  "type": "module",
6
6
  "bin": {
@@ -28,7 +28,7 @@
28
28
  "clean": "rm -rf dist",
29
29
  "start": "node dist/index.js",
30
30
  "lint": "eslint .",
31
- "test": "npx tsx --experimental-test-module-mocks --test --test-concurrency=1 src/__tests__/*.test.ts",
31
+ "test": "npx tsx --experimental-test-module-mocks --test --test-concurrency=1 src/__tests__/*.test.ts src/*.test.ts src/scanners/*.test.ts src/feeds/*.test.ts",
32
32
  "typecheck": "tsc --noEmit",
33
33
  "stamp-build-info": "node scripts/stamp-build-info.mjs",
34
34
  "stamp-build-info:local": "node scripts/stamp-build-info.mjs --empty",