@quolu/lattice 0.37.0 → 0.38.1

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.ja.md CHANGED
@@ -43,6 +43,21 @@ planを再コンパイルします。共有面が共有でなくなるので、
43
43
 
44
44
  人が手で切ったのではありません。**工程を並列化するために製品が切りました。**
45
45
 
46
+ ### 作業記憶はToDoと一緒に渡る
47
+
48
+ AIは、次の担当が作業を続けるために必要な方針、棄却案、調査結果、注意、未解決事項をToDoへ追記できます。
49
+ 通常の`lattice todo show`と、成功するすべての`lattice todo start`は、元version/元task、訂正状態、
50
+ note chain head、overflow、全履歴コマンドを含む最新のbounded `note_context`を自動で返します。
51
+ 次のAIが別のnote読取コマンドを知っている必要はありません。
52
+
53
+ ```bash
54
+ lattice todo note --plan <key> --task <id> --message "既存parserを使い、fallbackは追加しない"
55
+ lattice todo show --plan <key> --task <id> --json
56
+ ```
57
+
58
+ ローカルGanttでは、選択したToDoの右ペインへ同じ作業記録を表示します。公開Gantt/dashboardは契約として
59
+ note本文を含めません。
60
+
46
61
  ### 変換の受入五条件
47
62
 
48
63
  **5つすべて**を満たしたときだけ採用します。1つでも欠ければ棄却です。
package/README.md CHANGED
@@ -58,6 +58,22 @@ the same parallel group.
58
58
 
59
59
  Nobody hand-refactored that file. The product cut it so the work could parallelize.
60
60
 
61
+ ### Task memory travels with the task
62
+
63
+ An agent can append the decisions, rejected approaches, findings, cautions, and open questions needed
64
+ to continue a ToDo. A normal `lattice todo show` and every successful `lattice todo start` return the
65
+ latest bounded `note_context` automatically, including origin, correction state, chain head, overflow,
66
+ and the full-history command. The next agent does not need to discover or remember a separate note
67
+ lookup command.
68
+
69
+ ```bash
70
+ lattice todo note --plan <key> --task <id> --message "Use the existing parser; do not add a fallback"
71
+ lattice todo show --plan <key> --task <id> --json
72
+ ```
73
+
74
+ The same context appears in the selected ToDo's detail pane in a local Gantt. Public Gantt and
75
+ dashboard rendering exclude note bodies by contract.
76
+
61
77
  ### The five acceptance conditions
62
78
 
63
79
  A transform is adopted only when **all five** hold. One missing condition rejects it:
@@ -5,7 +5,7 @@ import path from 'node:path';
5
5
 
6
6
  import { readTodoStoreStable } from '../src/todo-store.mjs';
7
7
  import { projectTodoStatus } from '../src/todo-status.mjs';
8
- import { ganttLiveHeadDigest, renderTodoGanttForProject } from '../src/todo-cli.mjs';
8
+ import { ganttLiveHeadDigest, renderPublicTodoGanttForProject } from '../src/todo-cli.mjs';
9
9
  import {
10
10
  readVisibleTodoDashboardProjects,
11
11
  writeTodoDashboardDaemonDescriptor,
@@ -87,7 +87,7 @@ async function synchronize() {
87
87
  displayName: entry.display_name,
88
88
  render: async ({ displayName }) => {
89
89
  const store = await readCachedStore(entry.repo_root);
90
- const result = await renderTodoGanttForProject({ repoRoot: entry.repo_root,
90
+ const result = await renderPublicTodoGanttForProject({ repoRoot: entry.repo_root,
91
91
  stable: true, displayName, readModel: store });
92
92
  return {
93
93
  html: result.rendered.html,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quolu/lattice",
3
- "version": "0.37.0",
3
+ "version": "0.38.1",
4
4
  "description": "Schedulability compiler for multi-agent development: observe real code boundaries, refactor the conflicting seam, recompile the plan for parallel execution",
5
5
  "author": {
6
6
  "name": "Quo / クオ at kitepon.dev",
@@ -1 +1 @@
1
- {"version":3,"file":"tree-sitter.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree-sitter.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter.ts"],"names":[],"mappings":"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"}
@@ -809,9 +809,12 @@ class TreeSitterExtractor {
809
809
  const left = (0, tree_sitter_helpers_1.getChildByField)(n, 'left') ?? (0, tree_sitter_helpers_1.getChildByField)(n, 'pattern') ?? n.namedChild(0);
810
810
  if (left?.type === 'identifier')
811
811
  bump(left);
812
- else if (left)
812
+ // Attribute/subscript assignment mutates an existing binding's
813
+ // value; only destructuring patterns introduce/rebind names.
814
+ else if (left && ['expression_list', 'pattern_list', 'tuple', 'list', 'list_pattern'].includes(left.type)) {
813
815
  for (const c of left.namedChildren)
814
816
  bump(c);
817
+ }
815
818
  break;
816
819
  }
817
820
  case 'init_declarator': // C `T X = …` (file-scope const AND the local that shadows it)
@@ -863,30 +866,79 @@ class TreeSitterExtractor {
863
866
  if (targets.size === 0)
864
867
  return;
865
868
  }
866
- // Write detection is wired for the TS/JS family only (assignment/augmented/
867
- // update, including member mutation like `cache.x = 1`). Other value-ref
868
- // languages keep read-only edges until their grammars get the same wiring —
869
- // consumers must not read an absent flag as "read-only" for those languages.
870
- const writeAware = ['typescript', 'javascript', 'tsx', 'jsx', 'arkts'].includes(this.language);
869
+ // Write detection is wired for every language that also has a native-kernel
870
+ // value-ref mirror. Languages outside this set keep an absent flag — callers
871
+ // must not interpret absence as read-only.
872
+ const writeAware = [
873
+ 'typescript', 'javascript', 'tsx', 'jsx', 'arkts', 'go', 'python', 'java',
874
+ ].includes(this.language);
871
875
  const isWriteReference = (n) => {
872
- // Climb the leftmost object path: `cache.x.y = 1` / `cache[k] = 1` mutate
876
+ // Climb the binding-root path: `cache.x.y = 1` / `cache[k] = 1` mutate
873
877
  // the binding's value even though the identifier itself is not re-bound.
874
878
  let node = n;
875
879
  let parent = node.parent;
876
- while (parent && (parent.type === 'member_expression' || parent.type === 'subscript_expression')) {
877
- const object = (0, tree_sitter_helpers_1.getChildByField)(parent, 'object');
878
- if (!object || object.startIndex !== node.startIndex || object.endIndex !== node.endIndex)
879
- break;
880
- node = parent;
881
- parent = node.parent;
880
+ while (parent) {
881
+ const rootField = (() => {
882
+ if (parent.type === 'member_expression' || parent.type === 'subscript_expression')
883
+ return 'object';
884
+ if (this.language === 'go'
885
+ && ['selector_expression', 'index_expression', 'slice_expression'].includes(parent.type))
886
+ return 'operand';
887
+ if (this.language === 'python' && parent.type === 'attribute')
888
+ return 'object';
889
+ if (this.language === 'python' && parent.type === 'subscript')
890
+ return 'value';
891
+ if (this.language === 'java' && parent.type === 'field_access')
892
+ return 'object';
893
+ if (this.language === 'java' && parent.type === 'array_access')
894
+ return 'array';
895
+ return null;
896
+ })();
897
+ if (rootField !== null) {
898
+ const root = (0, tree_sitter_helpers_1.getChildByField)(parent, rootField);
899
+ if (!root || root.startIndex !== node.startIndex || root.endIndex !== node.endIndex)
900
+ break;
901
+ node = parent;
902
+ parent = node.parent;
903
+ continue;
904
+ }
905
+ // Go's assignment LHS is wrapped in an expression_list.
906
+ if (this.language === 'go' && parent.type === 'expression_list') {
907
+ node = parent;
908
+ parent = node.parent;
909
+ continue;
910
+ }
911
+ break;
882
912
  }
883
913
  if (!parent)
884
914
  return false;
885
- if (parent.type === 'assignment_expression' || parent.type === 'augmented_assignment_expression') {
886
- const left = (0, tree_sitter_helpers_1.getChildByField)(parent, 'left');
915
+ const isLeft = (owner, fields) => fields.some((field) => {
916
+ const left = (0, tree_sitter_helpers_1.getChildByField)(owner, field);
887
917
  return left !== null && left.startIndex === node.startIndex && left.endIndex === node.endIndex;
918
+ });
919
+ if (['typescript', 'javascript', 'tsx', 'jsx', 'arkts'].includes(this.language)) {
920
+ if (parent.type === 'assignment_expression' || parent.type === 'augmented_assignment_expression') {
921
+ return isLeft(parent, ['left']);
922
+ }
923
+ return parent.type === 'update_expression';
888
924
  }
889
- return parent.type === 'update_expression';
925
+ if (this.language === 'go') {
926
+ if (parent.type === 'assignment_statement')
927
+ return isLeft(parent, ['left']);
928
+ return parent.type === 'inc_statement' || parent.type === 'dec_statement';
929
+ }
930
+ if (this.language === 'python') {
931
+ if (parent.type === 'assignment' || parent.type === 'augmented_assignment') {
932
+ return isLeft(parent, ['left']);
933
+ }
934
+ return parent.type === 'named_expression' && isLeft(parent, ['name', 'left']);
935
+ }
936
+ if (this.language === 'java') {
937
+ if (parent.type === 'assignment_expression')
938
+ return isLeft(parent, ['left']);
939
+ return parent.type === 'update_expression';
940
+ }
941
+ return false;
890
942
  };
891
943
  for (const scope of scopes) {
892
944
  const seen = new Map();