@lamentis/naome 1.1.1 → 1.2.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.
Files changed (126) hide show
  1. package/Cargo.lock +2 -2
  2. package/Cargo.toml +1 -1
  3. package/LICENSE +180 -21
  4. package/README.md +49 -6
  5. package/bin/naome-node.js +44 -4
  6. package/bin/naome.js +54 -16
  7. package/crates/naome-cli/Cargo.toml +1 -1
  8. package/crates/naome-cli/src/check_commands.rs +135 -0
  9. package/crates/naome-cli/src/cli_args.rs +5 -0
  10. package/crates/naome-cli/src/dispatcher.rs +36 -0
  11. package/crates/naome-cli/src/install_bridge.rs +83 -0
  12. package/crates/naome-cli/src/main.rs +57 -341
  13. package/crates/naome-cli/src/prompt_commands.rs +68 -0
  14. package/crates/naome-cli/src/quality_commands.rs +141 -0
  15. package/crates/naome-cli/src/simple_commands.rs +53 -0
  16. package/crates/naome-cli/src/workflow_commands.rs +153 -0
  17. package/crates/naome-core/Cargo.toml +1 -1
  18. package/crates/naome-core/src/harness_health/integrity.rs +96 -0
  19. package/crates/naome-core/src/harness_health.rs +14 -126
  20. package/crates/naome-core/src/install_plan.rs +3 -0
  21. package/crates/naome-core/src/intent/classifier.rs +171 -0
  22. package/crates/naome-core/src/intent/envelope.rs +108 -0
  23. package/crates/naome-core/src/intent/legacy.rs +138 -0
  24. package/crates/naome-core/src/intent/legacy_response.rs +76 -0
  25. package/crates/naome-core/src/intent/model.rs +71 -0
  26. package/crates/naome-core/src/intent/patterns.rs +170 -0
  27. package/crates/naome-core/src/intent/resolver.rs +162 -0
  28. package/crates/naome-core/src/intent/resolver_active.rs +17 -0
  29. package/crates/naome-core/src/intent/resolver_baseline.rs +55 -0
  30. package/crates/naome-core/src/intent/resolver_catalog.rs +167 -0
  31. package/crates/naome-core/src/intent/resolver_policy.rs +72 -0
  32. package/crates/naome-core/src/intent/resolver_shared.rs +55 -0
  33. package/crates/naome-core/src/intent/risk.rs +40 -0
  34. package/crates/naome-core/src/intent/segment.rs +170 -0
  35. package/crates/naome-core/src/intent.rs +64 -879
  36. package/crates/naome-core/src/journal.rs +9 -20
  37. package/crates/naome-core/src/lib.rs +13 -0
  38. package/crates/naome-core/src/quality/adapters.rs +178 -0
  39. package/crates/naome-core/src/quality/baseline.rs +75 -0
  40. package/crates/naome-core/src/quality/checks/duplicate_blocks.rs +175 -0
  41. package/crates/naome-core/src/quality/checks/near_duplicates.rs +130 -0
  42. package/crates/naome-core/src/quality/checks.rs +228 -0
  43. package/crates/naome-core/src/quality/cleanup.rs +72 -0
  44. package/crates/naome-core/src/quality/config.rs +109 -0
  45. package/crates/naome-core/src/quality/mod.rs +90 -0
  46. package/crates/naome-core/src/quality/scanner/repo_paths.rs +103 -0
  47. package/crates/naome-core/src/quality/scanner.rs +367 -0
  48. package/crates/naome-core/src/quality/types.rs +289 -0
  49. package/crates/naome-core/src/route.rs +292 -17
  50. package/crates/naome-core/src/task_state/admission.rs +63 -0
  51. package/crates/naome-core/src/task_state/admission_proof.rs +72 -0
  52. package/crates/naome-core/src/task_state/api.rs +130 -0
  53. package/crates/naome-core/src/task_state/commit_gate.rs +138 -0
  54. package/crates/naome-core/src/task_state/compact_proof.rs +160 -0
  55. package/crates/naome-core/src/task_state/completed_refresh.rs +89 -0
  56. package/crates/naome-core/src/task_state/completion.rs +72 -0
  57. package/crates/naome-core/src/task_state/deleted_paths.rs +47 -0
  58. package/crates/naome-core/src/task_state/diff.rs +95 -0
  59. package/crates/naome-core/src/task_state/evidence.rs +154 -0
  60. package/crates/naome-core/src/task_state/git_io.rs +86 -0
  61. package/crates/naome-core/src/task_state/git_parse.rs +86 -0
  62. package/crates/naome-core/src/task_state/git_refs.rs +37 -0
  63. package/crates/naome-core/src/task_state/human_review_state.rs +31 -0
  64. package/crates/naome-core/src/task_state/mod.rs +38 -0
  65. package/crates/naome-core/src/task_state/process_guard.rs +40 -0
  66. package/crates/naome-core/src/task_state/progress.rs +123 -0
  67. package/crates/naome-core/src/task_state/proof.rs +139 -0
  68. package/crates/naome-core/src/task_state/proof_entry.rs +66 -0
  69. package/crates/naome-core/src/task_state/proof_model.rs +70 -0
  70. package/crates/naome-core/src/task_state/proof_sources.rs +76 -0
  71. package/crates/naome-core/src/task_state/push_gate.rs +49 -0
  72. package/crates/naome-core/src/task_state/reconcile.rs +7 -0
  73. package/crates/naome-core/src/task_state/repair.rs +168 -0
  74. package/crates/naome-core/src/task_state/shape.rs +117 -0
  75. package/crates/naome-core/src/task_state/task_diff_api.rs +170 -0
  76. package/crates/naome-core/src/task_state/task_records.rs +131 -0
  77. package/crates/naome-core/src/task_state/task_references.rs +126 -0
  78. package/crates/naome-core/src/task_state/types.rs +87 -0
  79. package/crates/naome-core/src/task_state/util.rs +137 -0
  80. package/crates/naome-core/src/verification/render.rs +122 -0
  81. package/crates/naome-core/src/verification.rs +176 -58
  82. package/crates/naome-core/src/verification_contract.rs +49 -21
  83. package/crates/naome-core/src/workflow/integrity.rs +123 -0
  84. package/crates/naome-core/src/workflow/integrity_normalize.rs +7 -0
  85. package/crates/naome-core/src/workflow/integrity_support.rs +110 -0
  86. package/crates/naome-core/src/workflow/mod.rs +18 -0
  87. package/crates/naome-core/src/workflow/mutation.rs +68 -0
  88. package/crates/naome-core/src/workflow/output.rs +111 -0
  89. package/crates/naome-core/src/workflow/phase_inference.rs +73 -0
  90. package/crates/naome-core/src/workflow/phases.rs +169 -0
  91. package/crates/naome-core/src/workflow/policy.rs +156 -0
  92. package/crates/naome-core/src/workflow/processes.rs +91 -0
  93. package/crates/naome-core/src/workflow/types.rs +42 -0
  94. package/crates/naome-core/tests/harness_health.rs +3 -0
  95. package/crates/naome-core/tests/intent.rs +97 -792
  96. package/crates/naome-core/tests/intent_support/mod.rs +133 -0
  97. package/crates/naome-core/tests/intent_v2.rs +90 -0
  98. package/crates/naome-core/tests/quality.rs +425 -0
  99. package/crates/naome-core/tests/route.rs +221 -4
  100. package/crates/naome-core/tests/task_state.rs +3 -0
  101. package/crates/naome-core/tests/task_state_compact.rs +110 -0
  102. package/crates/naome-core/tests/task_state_compact_support/mod.rs +5 -0
  103. package/crates/naome-core/tests/task_state_compact_support/repo.rs +130 -0
  104. package/crates/naome-core/tests/task_state_compact_support/states.rs +151 -0
  105. package/crates/naome-core/tests/workflow_integrity.rs +85 -0
  106. package/crates/naome-core/tests/workflow_policy.rs +139 -0
  107. package/crates/naome-core/tests/workflow_support/mod.rs +194 -0
  108. package/native/darwin-arm64/naome +0 -0
  109. package/native/linux-x64/naome +0 -0
  110. package/package.json +2 -2
  111. package/templates/naome-root/.naome/bin/check-harness-health.js +66 -85
  112. package/templates/naome-root/.naome/bin/check-task-state.js +9 -10
  113. package/templates/naome-root/.naome/bin/naome.js +34 -63
  114. package/templates/naome-root/.naome/manifest.json +20 -18
  115. package/templates/naome-root/.naome/repository-quality-baseline.json +5 -0
  116. package/templates/naome-root/.naome/repository-quality.json +24 -0
  117. package/templates/naome-root/.naome/task-contract.schema.json +93 -11
  118. package/templates/naome-root/.naome/upgrade-state.json +1 -1
  119. package/templates/naome-root/.naome/verification.json +37 -0
  120. package/templates/naome-root/AGENTS.md +3 -0
  121. package/templates/naome-root/docs/naome/agent-workflow.md +25 -12
  122. package/templates/naome-root/docs/naome/execution.md +25 -21
  123. package/templates/naome-root/docs/naome/index.md +4 -3
  124. package/templates/naome-root/docs/naome/repository-quality.md +43 -0
  125. package/templates/naome-root/docs/naome/testing.md +12 -0
  126. package/crates/naome-core/src/task_state.rs +0 -2210
@@ -0,0 +1,91 @@
1
+ use std::fs;
2
+ use std::path::Path;
3
+
4
+ use serde::{Deserialize, Serialize};
5
+ use serde_json::Value;
6
+
7
+ use crate::models::NaomeError;
8
+
9
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10
+ #[serde(rename_all = "camelCase")]
11
+ pub struct ProcessReport {
12
+ pub schema: String,
13
+ pub active: Vec<TrackedProcess>,
14
+ }
15
+
16
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
17
+ #[serde(rename_all = "camelCase")]
18
+ pub struct TrackedProcess {
19
+ pub pid: Option<u32>,
20
+ pub command: String,
21
+ pub cwd: String,
22
+ pub started_at: Option<String>,
23
+ pub status: String,
24
+ pub allow_after_completion: bool,
25
+ }
26
+
27
+ pub fn tracked_process_report(root: &Path) -> Result<ProcessReport, NaomeError> {
28
+ let path = root.join(".naome/processes.json");
29
+ if !path.exists() {
30
+ return Ok(ProcessReport {
31
+ schema: "naome.process-report.v1".to_string(),
32
+ active: Vec::new(),
33
+ });
34
+ }
35
+
36
+ let value: Value = serde_json::from_str(&fs::read_to_string(path)?)?;
37
+ let active = value
38
+ .get("processes")
39
+ .and_then(Value::as_array)
40
+ .into_iter()
41
+ .flatten()
42
+ .filter_map(parse_process)
43
+ .filter(is_active_blocker)
44
+ .collect();
45
+
46
+ Ok(ProcessReport {
47
+ schema: "naome.process-report.v1".to_string(),
48
+ active,
49
+ })
50
+ }
51
+
52
+ fn parse_process(value: &Value) -> Option<TrackedProcess> {
53
+ Some(TrackedProcess {
54
+ pid: value
55
+ .get("pid")
56
+ .and_then(Value::as_u64)
57
+ .map(|pid| pid as u32),
58
+ command: value.get("command")?.as_str()?.to_string(),
59
+ cwd: value
60
+ .get("cwd")
61
+ .and_then(Value::as_str)
62
+ .unwrap_or(".")
63
+ .to_string(),
64
+ started_at: value
65
+ .get("startedAt")
66
+ .and_then(Value::as_str)
67
+ .map(ToString::to_string),
68
+ status: value
69
+ .get("status")
70
+ .and_then(Value::as_str)
71
+ .unwrap_or("unknown")
72
+ .to_string(),
73
+ allow_after_completion: value
74
+ .get("allowAfterCompletion")
75
+ .and_then(Value::as_bool)
76
+ .unwrap_or(false),
77
+ })
78
+ }
79
+
80
+ fn is_active_blocker(process: &TrackedProcess) -> bool {
81
+ process.status == "running"
82
+ && !process.allow_after_completion
83
+ && match process.pid {
84
+ Some(pid) => process_may_be_running(pid),
85
+ None => true,
86
+ }
87
+ }
88
+
89
+ fn process_may_be_running(pid: u32) -> bool {
90
+ pid == std::process::id() || pid > 0
91
+ }
@@ -0,0 +1,42 @@
1
+ use serde::{Deserialize, Serialize};
2
+
3
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
4
+ #[serde(rename_all = "camelCase")]
5
+ pub struct WorkflowFinding {
6
+ pub check_id: String,
7
+ pub severity: String,
8
+ pub message: String,
9
+ pub paths: Vec<String>,
10
+ pub command: Option<String>,
11
+ }
12
+
13
+ impl WorkflowFinding {
14
+ pub(crate) fn blocking(
15
+ check_id: &str,
16
+ message: impl Into<String>,
17
+ paths: Vec<String>,
18
+ command: Option<String>,
19
+ ) -> Self {
20
+ Self {
21
+ check_id: check_id.to_string(),
22
+ severity: "blocking".to_string(),
23
+ message: message.into(),
24
+ paths,
25
+ command,
26
+ }
27
+ }
28
+ }
29
+
30
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
31
+ #[serde(rename_all = "camelCase")]
32
+ pub struct ReadActivity {
33
+ pub command: String,
34
+ pub paths: Vec<String>,
35
+ }
36
+
37
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
38
+ #[serde(rename_all = "camelCase")]
39
+ pub struct MutationClassification {
40
+ pub path: String,
41
+ pub mutation_class: String,
42
+ }
@@ -29,9 +29,12 @@ const PROJECT_OWNED_PATHS: &[&str] = &[
29
29
  ".naome/task-state.json",
30
30
  ".naome/upgrade-state.json",
31
31
  ".naome/verification.json",
32
+ ".naome/repository-quality.json",
33
+ ".naome/repository-quality-baseline.json",
32
34
  "docs/naome/architecture.md",
33
35
  "docs/naome/decisions.md",
34
36
  "docs/naome/repo-profile.md",
37
+ "docs/naome/repository-quality.md",
35
38
  "docs/naome/security.md",
36
39
  "docs/naome/testing.md",
37
40
  ];