@niroai/niro 0.15.0 → 0.16.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/CHANGELOG.md +38 -0
- package/package.json +1 -1
- package/src/lib/folderSync.js +14 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,44 @@ Notable changes to `@niroai/niro`. Dates are release dates.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 0.16.0 — 2026-09-22
|
|
8
|
+
|
|
9
|
+
### A reverse proxy's routing table is offered for upload
|
|
10
|
+
|
|
11
|
+
Most services do not call each other directly. They call a proxy, and a routing table decides who
|
|
12
|
+
really answers. That table is the only place the hop is written down, and the CLI was not offering
|
|
13
|
+
it, so the server never saw it and the graph stopped at the proxy.
|
|
14
|
+
|
|
15
|
+
Newly offered:
|
|
16
|
+
|
|
17
|
+
- `nginx.conf`, `haproxy.cfg`, `httpd.conf`, `apache2.conf`
|
|
18
|
+
- compose files named for their environment, not just `docker-compose.yml`: a Traefik routing table
|
|
19
|
+
lives in container labels, and those labels are routinely in `docker-compose.production.yml`
|
|
20
|
+
- Kubernetes Ingress manifests under the names teams actually use: `ingress.yaml`,
|
|
21
|
+
`*-ingress.yaml`, `*_ingress.yaml`
|
|
22
|
+
|
|
23
|
+
Deliberately still NOT offered: every `.yaml`. An Ingress can be in any file, and claiming all of
|
|
24
|
+
them would upload every Helm chart, kustomization and CI file in a repository to find the occasional
|
|
25
|
+
routing table. An Ingress under an unconventional name is a stated limit rather than a silent one.
|
|
26
|
+
|
|
27
|
+
Envoy was left out on purpose. A file that is uploaded and then read by nothing is cost with no
|
|
28
|
+
benefit, and the server has no Envoy reader yet.
|
|
29
|
+
|
|
30
|
+
### A drift guard for the config list
|
|
31
|
+
|
|
32
|
+
`CONFIG_FILENAMES` is a hand-kept copy of the server's list and nothing compared the two.
|
|
33
|
+
`test/configFilenameDrift.test.js` now does, alongside the existing extension guard. This matters
|
|
34
|
+
more than it did: if the copies drift now, the CLI stops offering `nginx.conf`, the server never
|
|
35
|
+
receives it, and every connection through that proxy quietly disappears from the graph. The symptom
|
|
36
|
+
reads as "proxy support is broken" and is nowhere near the list that caused it.
|
|
37
|
+
|
|
38
|
+
### Upgrade order
|
|
39
|
+
|
|
40
|
+
The server's filter remains the final say, so either order is safe: an older CLI offers fewer files,
|
|
41
|
+
and a newer CLI against an older server has its extra offers declined. The routing tables reach the
|
|
42
|
+
graph once both sides are current (ai-orchestrator `25131e94` or later). Repositories the server
|
|
43
|
+
clones itself are unaffected by this release; their files never went through the CLI.
|
|
44
|
+
|
|
7
45
|
## 0.15.0 — 2026-09-21
|
|
8
46
|
|
|
9
47
|
### Twenty more file types are offered for upload
|
package/package.json
CHANGED
package/src/lib/folderSync.js
CHANGED
|
@@ -120,6 +120,9 @@ const CONFIG_FILENAMES = new Set([
|
|
|
120
120
|
"application.yml.example", "application.yml.sample",
|
|
121
121
|
"application.yaml.example", "application.yaml.sample",
|
|
122
122
|
"dockerfile", "docker-compose.yml", "docker-compose.yaml",
|
|
123
|
+
// A reverse proxy's routing table is the only place the hop from a caller to the service that
|
|
124
|
+
// really answers is written down. MUST stay in step with SourceFileFilterService.CONFIG_FILENAMES.
|
|
125
|
+
"nginx.conf", "haproxy.cfg", "httpd.conf", "apache2.conf",
|
|
123
126
|
]);
|
|
124
127
|
|
|
125
128
|
const CONFIG_WILDCARD_SUFFIXES = [".properties", ".yml", ".yaml"];
|
|
@@ -127,8 +130,19 @@ const CONFIG_WILDCARD_SUFFIXES = [".properties", ".yml", ".yaml"];
|
|
|
127
130
|
// True for committed config/property/template files that carry env-var DEFAULTS,
|
|
128
131
|
// false for secret-bearing files (bare .env, .env.local, .env.production, and
|
|
129
132
|
// arbitrary *.properties). `lower` is the already-lowercased filename.
|
|
133
|
+
// Routing configs whose filename is a convention rather than a fixed name. Deliberately narrow:
|
|
134
|
+
// making every .yaml eligible would upload every chart and CI file in a repo. MUST stay in step with
|
|
135
|
+
// SourceFileFilterService.isRoutingManifestName.
|
|
136
|
+
function isRoutingManifestName(lower) {
|
|
137
|
+
if (!lower.endsWith(".yml") && !lower.endsWith(".yaml")) return false;
|
|
138
|
+
if (lower.startsWith("docker-compose") || lower.startsWith("compose.")) return true;
|
|
139
|
+
const stem = lower.slice(0, lower.lastIndexOf("."));
|
|
140
|
+
return stem === "ingress" || stem.endsWith("-ingress") || stem.endsWith("_ingress");
|
|
141
|
+
}
|
|
142
|
+
|
|
130
143
|
function isConfigName(lower) {
|
|
131
144
|
if (CONFIG_FILENAMES.has(lower)) return true;
|
|
145
|
+
if (isRoutingManifestName(lower)) return true;
|
|
132
146
|
// Spring profile files: application-<profile>.{properties,yml,yaml}, profile
|
|
133
147
|
// non-empty (reject "application-.properties").
|
|
134
148
|
const prefix = "application-";
|